Объявление и определение переменной

Имеем файл ini.h

int n;

А также ini.cpp

n = 5;

Получаю ошибку: это объявление не содержит класс хранения или спецификатор типа

если сделать так

ini.h

int n = 5;

main.cpp

include "ini.h"

int main()
{
 cout<<n;
}

Получаю ошибку: int n уже определено в ini.obj

Как же определить переменную в отдельном файле


Ответы (1 шт):

Автор решения: Harry

В ini.cpp вы что, просто пишете n = 5;? Без указания типа, не в функции?

Понятно, что такой фокус не работает — это и не объявление и не определение (нет типа).

Вообще-то использование глобальных переменных — это плохо... Но если уж вам надо ну просто позарез, да еще и в разных файлах...

ini.h

extern int n;

Сие слово — extern — поясняет компилятору, что это просто объявление, а определение будет дано где-то в другом месте. Просто, так сказать, "учти — если встретишь переменную n — то это переменная типа int".

ini.cpp

int n = 5;

main.cpp

// Как у вас и написано
→ Ссылка