LINUX.ORG.RU

История изменений

Исправление hobbit, (текущая версия) :

С каких пор .h фал уже стал модулем?

А я и не говорю, что он модуль. В том и дело, что не модуль.

А что, если завести глобальную переменную не в .h файле, а в .c - проблема исчезнет?

Да, в контексте ОП - исчезнет.

язык дерьмо

Повторяю ещё раз: я этого не утверждал. Дерьмо - это костыли, которые городят в C и C++ вместо отсутствующей в них модульности. Из-за этого приходится два раза писать имя одной переменной: один раз с extern, другой без. И это стандартная практика. В том же объектном паскале достаточно поместить переменную в секцию interface, чтобы её видели другие модули.

Проблема топикстартера в том, что он, видимо, не до конца разобрался с участниками процесса сборки (препроцессор, компилятор, компоновщик).

Так-то си - язык хороший, но вот эта его особенность реально вымораживает. С годами привыкаешь, но для новичков это эталонные грабли. А при чуточку более дружелюбном дизайне языка грабель могло и не быть.

Исходная версия hobbit, :

С каких пор .h фал уже стал модулем?

А я и не говорю, что он модуль. В том и дело, что не модуль.

А что, если завести глобальную переменную не в .h файле, а в .c - проблема исчезнет?

Да, в контексте ОП - исчезнет.

язык дерьмо

Повторяю ещё раз: я этого не утверждал. Дерьмо - это костыли, которые городят в C и C++ вместо отсутствующей в них модульности. Из-за этого приходится два раза писать имя одной переменной: один раз с extern, другой без. И это стандартная практика. В том же объектном паскале достаточно поместить переменную в секцию interface, чтобы её видели другие модули.

Проблема топикстартера в том, что он, видимо, не до конца разобрался с участниками процесса сборки (препроцессор, компилятор, компоновщик).

Так-то си - язык хороший, но вот эта его особенность реально вымораживает.