#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 - своя. Как и во втором - в каждом файле - своя переменная. Это - не глобальная переменная, она просто видна везде на уровне файла, но в каждом файле она своя.
Комментариев нет:
Отправить комментарий