Wiki का कहना है:घोषणापत्र के साथ बाहरी चर को परिभाषित करने के लिए कैसे?
extern
कीवर्ड का अर्थ है "को परिभाषित करने के बिना घोषित"। दूसरे शब्दों में, यह स्पष्ट रूप से एक चर घोषित करने का तरीका है, या परिभाषा के बिना घोषणा को मजबूर करने का एक तरीका है। एक चर को स्पष्ट रूप से परिभाषित करना भी संभव है, यानी परिभाषा को मजबूर करने के लिए। यह एक वैरिएबल पर प्रारंभिक मान निर्दिष्ट करके किया जाता है।
इसका मतलब है, एक extern
घोषणा कि चर initializes कि चर के लिए एक परिभाषा के रूप में कार्य करता है। तो,
/* Just for testing purpose only */
#include <stdio.h>
extern int y = 0;
int main(){
printf("%d\n", y);
return 0;
}
मान्य होना चाहिए (compiled in C++11)।
[Warning] 'y' initialized and declared 'extern' [enabled by default]
जो नहीं करना चाहिए: लेकिन जब जीसीसी 4.7.2 में विकल्प -Wall -Wextra -pedantic -std=c99
साथ संकलित, एक चेतावनी पैदा करता है। AFAIK,
extern int y = 0;
प्रभावी रूप से
int i = 0;
रूप में एक ही गलत यहाँ क्या हो रहा है है?
[यह] (http://stackoverflow.com/questions/4268589/warning-in-extern-declaration) भी मदद कर सकता है। स्वीकार्य उत्तर नहीं, लेकिन [एंड्रीटी] द्वारा एक (http://stackoverflow.com/users/187690/andreyt)। नोट विशेष रूप से जवाब की अंतिम पंक्ति: _Just संकलक सेटिंग्स में इस चेतावनी को निष्क्रिय (और, कृपया, जीसीसी टीम को इसके बारे में एक असभ्य पत्र लिखने) ._ – devnull
@devnull; हाँ .. – haccks
@devnull; आदमी। तुमने मुझे बचाया। मैं इसके बारे में एक घंटे के बारे में गड़बड़ कर रहा था! बहुत बहुत धन्यवाद :) – haccks