Правильный способ пересылки переменной в заголовочный файл будет
extern int TOS;
без extern
в противном случае это может привести к тому, что TOS
будет выделен в нескольких единицах компиляции (файлы .o).
Затем вы дадите определение в одном файле .c как
int TOS;
Это тогда зарезервирует для него место, и, поскольку это переменная в глобальной области видимости, оно также инициализирует его как 0
. Если вы хотите сделать эту инициализацию явной или хотите, чтобы она имела значение, отличное от 0
, правильный синтаксис для инициализации (а не присваивание ) -
int TOS = 54;
Современный C не допускает синтаксис, который, как вам кажется, откуда-то унаследован, а именно определение глобальной переменной с неявным типом int
.