История изменений
Исправление hobbit, (текущая версия) :
С каких пор .h фал уже стал модулем?
А я и не говорю, что он модуль. В том и дело, что не модуль.
А что, если завести глобальную переменную не в .h файле, а в .c - проблема исчезнет?
Да, в контексте ОП - исчезнет.
язык дерьмо
Повторяю ещё раз: я этого не утверждал. Дерьмо - это костыли, которые городят в C и C++ вместо отсутствующей в них модульности. Из-за этого приходится два раза писать имя одной переменной: один раз с extern, другой без. И это стандартная практика. В том же объектном паскале достаточно поместить переменную в секцию interface, чтобы её видели другие модули.
Проблема топикстартера в том, что он, видимо, не до конца разобрался с участниками процесса сборки (препроцессор, компилятор, компоновщик).
Так-то си - язык хороший, но вот эта его особенность реально вымораживает. С годами привыкаешь, но для новичков это эталонные грабли. А при чуточку более дружелюбном дизайне языка грабель могло и не быть.
Исходная версия hobbit, :
С каких пор .h фал уже стал модулем?
А я и не говорю, что он модуль. В том и дело, что не модуль.
А что, если завести глобальную переменную не в .h файле, а в .c - проблема исчезнет?
Да, в контексте ОП - исчезнет.
язык дерьмо
Повторяю ещё раз: я этого не утверждал. Дерьмо - это костыли, которые городят в C и C++ вместо отсутствующей в них модульности. Из-за этого приходится два раза писать имя одной переменной: один раз с extern, другой без. И это стандартная практика. В том же объектном паскале достаточно поместить переменную в секцию interface, чтобы её видели другие модули.
Проблема топикстартера в том, что он, видимо, не до конца разобрался с участниками процесса сборки (препроцессор, компилятор, компоновщик).
Так-то си - язык хороший, но вот эта его особенность реально вымораживает.