Вы не должны помещать фактические переменные в заголовок, только extern
их объявления. Поместите фактические переменные в отдельный файл .c
или .cpp
и свяжите его с этим.
В заголовке (давайте назовем его globals.h
) вы помещаете это объявление:
extern int g_nBytesToSend;
Затем вы создаете новый файл кода для хранения фактических переменных (скажем, global.c
):
int g_nBytesToSend;
Давайте представим, что у вас есть три кодовых файла server.c
, client.c
и bot.c
и что вы используете gcc. Вы бы построили это как:
gcc -o server.o -c server.c
gcc -o client.o -c client.c
gcc -o bot.o -c bot.c
gcc -o globals.o -c globals.c
gcc -o mybot server.o client.o bot.o globals.o
(Постарайтесь, чтобы количество глобалов было небольшим.)