2016-10-03 17 views
-3
extern int i; 
void add(); 

int main() 
{ 
    add(); 
    if (i == 0) 
     printf("scope rules\n"); 
} 

void add() 
{ 
    int i; 
} 

Я получаю ошибки в этом случае даже переменная я определена в надстройке функцииЭкстерн ключевого слова проблема в с

, но она не даст никаких ошибок сборки в следующем случае

extern int i; 
void add(); 

int main() 
{ 
    int i; 
    //add(); 
    if (i == 0) 
     printf("scope rules\n"); 
} 

void add(){ 
    //int i; 
} 
+2

Вам необходимо прочитать книгу на C или C++, которая подробно объяснит это. –

ответ

2

extern Ключевое слово говорит компилятор предположить, что переменная определена в другом месте (не в этом конкретном файле или единицах перевода). Имя переменной будет разрешено на этапе компоновки.

Так что, когда вы пишете:

extern int i;

вы должны убедиться, что переменная i определяется в другом месте (в другом файле).

И остерегаться, чтобы не перепутать, что Экстерн i и местный i в вашей add функции - это локальная переменная имеет объем внутри функции add и не имеет ничего общего с экстерном i переменной.

void add() 
{ 
    int i; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^