#c
Нужно, что бы var не был виден в main, но виделся и использовался в других файлах.
Когда было сделано как ниже - работало.
MAIN.c
#include Header.h
foo1();
Header.h
void foo1(void);
void foo2(void);
void foo3(void);
Variables.h
static int var;
Source.c
#include Header.h
#include Variables.h
foo1(){var++;}
foo2(){var++;}
foo3(){var++;}
После изменения как ниже - перестало, при каждом вызове функции var == 0, а вне не
определен.
MAIN.c
#include Header.h
foo1();
Header.h
void foo1(void);
void foo2(void);
void foo3(void);
Variables.h
static int var;
Source1.c
#include Header.h
#include Variables.h
foo1(){var++;}
Source2.c
#include Header.h
#include Variables.h
foo2(){var++;}
Source3.c
#include Header.h
#include Variables.h
foo3(){var++;}
Ответы
Ответ 1
А какой смысл в вашем пожелании? Вы хотите использовать в main() свою переменную с именем var или что? Просто смысл глобальной переменной именно в этом - быть видимой везде, во всех файлах. Так что поясните, что именно вы хотите, а то пока что требования у вас противоречивые... Может, можно было бы использовать статическую переменную в функции - например, Variables.h int* getVar(); Variables.c int* getVar() { static int var; return &var; } SourceN.c #include "Header.h" #include "Variables.h" void fooN(){ (*getVar())++; } Но чтобы понять, подходит ли вам это решение - нужно понимать, что вы хотите. Глобальные переменные вообще лучше не использовать... И еще - по первому варианту у вас в main() своя переменная var, в Source - своя. Как и во втором - в каждом файле - своя переменная. Это - не глобальная переменная, она просто видна везде на уровне файла, но в каждом файле она своя.
Комментариев нет:
Отправить комментарий