क्षमा करें यदि यह दोहराया गया प्रश्न है, लेकिन मैं कुछ घंटों के लिए खोज कर रहा हूं, और मुझे विवादित उत्तर मिल रहे हैं ... और इससे भी बदतर, उनमें से कोई भी नहीं काम कर रहे हैं।ग्रहण/जीसीसी: बाहरी परिवर्तनीय के लिए अनिर्धारित संदर्भ
यह एक साधारण बात है। मेरे पास कई स्रोत फ़ाइलें हैं, और मेरे पास कुछ सामान्य पैरामीटर हैं जिन्हें मैं एक फ़ाइल में होना चाहता हूं, "पैरामीटर एच" कहें। मैं प्रोग्राम के तर्क के रूप में उन्हें पास करके, इन पैरामीटर (एक बार) रनटाइम पर सेट करना चाहता हूं।
पीएस: मुझे पता है कि ऐसा करने का एक बेहतर तरीका कार्यों के लिए तर्क के रूप में सबकुछ पास करना है, लेकिन यह कोड का एक छोटा टुकड़ा है और मुझे बहुत सारे बदलाव किए बिना जल्द ही परिणाम प्राप्त करने की आवश्यकता है।
यहाँ एक न्यूनतम काम कर उदाहरण है:
Parameters.h
#ifndef PARAMETERS_H_
#define PARAMETERS_H_
extern int Alpha;
#endif
main.cpp
#include <iostream>
#include "Parameters.h"
int main(int argc, char * argv[])
{
const int Alpha = 12.0;
}
Functions.cpp
#include "Parameters.h"
double Foo(const double& x)
{
return Alpha*x;
}
जब मैं
gcc main.cpp Functions.cpp
साथ संकलन मैं त्रुटि "।:` अल्फा 'के लिए अपरिभाषित संदर्भ Functions.cpp :(पाठ + 0xA) "मिलता है।
आपको बहुत बहुत धन्यवाद! समस्या यह थी कि, जैसा कि आप कहते हैं, कि मैं मुख्य.cpp में फ़ाइल दायरे में अल्फा को परिभाषित नहीं कर रहा था। अब मैं बेवकूफ की तरह महसूस करता हूं :-) फिर से धन्यवाद। – MGA
क्या अल्फा को हेडर फ़ाइल में घोषित करने पर अल्फा को 'बाहरी' के रूप में परिभाषित करने की आवश्यकता है? – ldgorman
@ldgorman: यदि आप 'बाहरी' का उपयोग नहीं करते हैं, तो यह केवल एक घोषणा नहीं होगी, बल्कि एक घोषणा होगी। यदि आप इस हेडर को एक से अधिक स्रोत फ़ाइल में शामिल करते हैं, तो आपको एक ही प्रतीक की कई परिभाषाओं के बारे में लिंकर त्रुटियां मिलेंगी। –