2014-12-02 6 views
0

Я пытаюсь узнать о ключевом слове extern.Попытка понять ключевое слово extern

Я создал этот файл try2.cpp

#include <stdio.h> 
#include <conio.h> 

extern int a; 

int main() 
{ 

    a = 5; 
    printf("%d", a); 
    getch(); 
    return 0; 
} 

И этот try1.cpp

int a; 

int main() 
{ 

    a = 10; 
    return 0; 
} 

Но я получаю сообщение об ошибке в try2.c, что не определено. Оба файла находятся в папке BIN TurboC.

В чем проблема?

+2

Это выглядит очень похоже на весь код C, почему C++ тег? – shuttle87

+3

Вы хотите создать одну программу из двух исходных файлов, а не две отдельные программы. –

+4

Turbo C++ из Borland был серединой 1990-х и более ранним компилятором. Это довольно старый, и, в частности, он предшествует первому стандарту C++ с 1998 года. Вам следовало бы переключиться на современный компилятор C++. –

ответ

0

extern говорит, что что-то определено в другом месте. Вы не определяете его в другом месте (в этой программе). Линкера справедливо жалуется на это.

1

В вашем try2.cpp, у вас есть:

extern int a; 

Это говорит компилятору, что a определяется извне - то есть не в пределах try2.cpp. Таким образом, вы должны на самом деле определить его извне, и для этого вам нужен второй файл .cpp - позволяет сказать, что вы делаете a.cpp файл, который содержит:

int a; 

Вы можете компилировать каждый из try2.cpp и. каст:

tc -c try2.cpp 
tc -c a.cpp 

Затем вам нужно связать их, также указав путь к стандартному файлу библиотеки CS.lib (найти его с помощью проводника Windows, если ниже не работает - обновление \TC\LIB\ путь ниже):

tlink try2.obj + a.obj, program.exe, , \TC\LIB\CS.lib 

Это должно создать новый program.exe для вас бежать ....

Вы должны получить лучший компилятор, хотя ....

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

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