Re[2]: Определение глобальных переменных в .h файлах
От: Chez Россия  
Дата: 01.10.04 13:11
Оценка:
Здравствуйте, 0xDEADBEEF, Вы писали:

DEA>Здравствуйте, AlexGluharev, Вы писали:


AG>>Пожалуйста, помогите!


AG>>Пишу программу на Visual C++. В пректе находится несколько .cpp файлов, в каждый из которых

AG>>я вставляю заголовочный файл с глобальными переменными (естественно, в те .cpp файлы, в которых
AG>>эти переменные используются) с помощью #include "global.h"
DEA>то есть типа
DEA>
DEA>TheClass g_variable;
DEA>


DEA>Если так, то ты в пролете — эта штука будет включена в КАЖДЫЙ .cpp файл, где ты используешь (прямо или косвенно) твой "global.h". А это, в свою очередь, значит, что при линковке у тебя будет g_variable в каждом .obj — файле.

DEA>Линкер на такое должен обижаться.

DEA>Теперь, как этого избежать:

DEA>- или используй директиву "selectany" вот так:
__declspec(selectany) TheClass g_variable;

DEA>- или перенеси декларации "TheClass g_variаble;" в какой-нибудь (но ОДИН!) .cpp-файл, а вместо этого в .h-файле используй "extern TheClass g_variable;"

Selectany работает только так:
extern __declspec(selectany) type_without_constructor = initializer;


иначе:

error C2496: 'sss' : 'selectany' can only be applied to statically initialized data items with external linkage

Chez, ICQ# 161095094
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.