मेरे पास एक एएनएसआई सी प्रोग्राम है जिसमें दो फाइलें शामिल हैं। पहली फ़ाइल में main()
फ़ंक्शन शामिल है, और दूसरी फ़ाइल में अन्य फ़ंक्शन हैं जो पहली फ़ाइल कॉल करते हैं। इससे पहले कि main()
समारोह परिभाषा, मैं निम्नलिखित कोड डाला है:सी प्रोग्राम में वैश्विक स्थिर (एकाधिक फ़ाइलों में काम) कैसे करें?
#define PI 3.14159265358979323846
लेकिन 2 फ़ाइल इस चर नहीं देखा। पहली फ़ाइल इसे ठीक देखती है। फिर, मैंने फ़ंक्शन परिभाषाओं से पहले, दूसरी फ़ाइल में इसे उसी फ़ाइल में रखा है (इसे ऊपर की पहली फ़ाइल में रखते हुए), लेकिन फिर भी दूसरी फ़ाइल इसे नहीं देखती है। हालात हमेशा ठीक संकलित करते हैं, लेकिन जब यह gdb में परिवर्तनीय पीआई का पता लगाता है, तो यह "No symbol "PI" in current context."
पीआई को एप्लिकेशन में संकलित सभी फ़ाइलों में वैश्विक निरंतर देखने योग्य बनाने के लिए कैसे दिखाता है?
संपादित करें/अद्यतन:
प्रतिक्रिया अब तक, मैं निम्न फ़ाइल बना लिया है के आधार पर:
myheader.h
#ifndef my_header_stuff
#define my_header_stuff
#define PI 3.1415926535897932384626433832795
#endif
और दो फ़ाइलों मैं चाहता हूँ में इस निरंतर पीआई को देखने के लिए, मैंने इस फ़ाइल को निम्नानुसार शामिल किया है:
file1.c
#include <stdio.h>
#include <stdlib.h>
#include "myheader.h"
int main(void) {
etc...
}
और file2.c
#include <stdio.h>
#include <stdlib.h>
#include "myheader.h"
double interesting_function(void) {
etc...
}
सवाल:
जब मैं डिबग करने के लिए GDB का उपयोग करें,
b PI
रिटर्न (दोनों फ़ाइलों में, एक ही परिणाम) "कोई प्रतीक वर्तमान संदर्भ में "पीआई" "। हालांकि, पीआई के आधार पर गणित की गणना सही ढंग से की जाती है। जीडीबी में पीआई देखने का कोई तरीका है?क्या मैं
myheader.h
फ़ाइल में stdio और stdlib के लिए दो पंक्तियां भी शामिल कर सकता हूं?क्या मैं
myheader.h
फ़ाइल में कोई फ़ंक्शन प्रोटोटाइप भी शामिल कर सकता हूं? अगर मैं करता हूं, और फिर मान लें कि मैं एक फ़ाइल 3.c बना रहा हूं जिसमें इन प्रोटोटाइपों में से किसी की आवश्यकता नहीं है क्योंकि यह उन कार्यों का उपयोग नहीं करता है, क्या कोई नुकसान हुआ है?
हमेशा .h फ़ाइलों में सभी परिभाषाओं को .c फ़ाइलों और घोषणाओं (मैक्रोज़ सहित) में डाल दें।उस समय 99% समस्या को हल करना चाहिए। – JosephH
धन्यवाद जोसेफ एच, क्या आप इस के यांत्रिकी के साथ मेरी मदद कर सकते हैं? ऊपर मेरा प्रयास देखें। – ggkmath
क्या उत्तर मैंने अभी पोस्ट किया है – JosephH