Пытаясь понять ключевое слово extern

0

Я пытаюсь узнать о ключевом слове 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 возникает ошибка: a не определено. Оба файла находятся в папке BIN TurboC.

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

  • 2
    Это очень похоже на код на C, почему тэг c ++?
  • 3
    Вы хотите создать одну программу из двух исходных файлов, а не двух отдельных программ.
Показать ещё 5 комментариев
Теги:
extern

2 ответа

1

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

extern int a;

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

int a;

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

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

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

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

Это должно создать новый program.exe для запуска.

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

0

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню