Вопрос идиотский, заранее прошу ногами не пинать, но подскажите, как объявить глобальную переменную в Си, так чтобы ее видели фукнции из других файлов проекта.
Если переменная действительно глобальная, то она должна быть описана в одном месте (хедере), иначе потом заколебешься ее руками в сотне файлов набивать.
> ...вариант с глобальными переменными мне кажется наиболее простым способом хранения ряда настроек, которые получает программа при инициализации.
Правильно, все так делают.
Когда советуют избегать использования глобальных переменных, обычно подразумевают -- "без необходимости". Однако, подобные советы, особенно исходящие от авторитетов, часто воспринимаются как догмы.
Один совет -- извини, если покажется банальным -- все глобальные идентификаторы как-то выделять в духе Венгерской нотации. Например, начинать их с префикса g_. И в хидере (где прописаны extern...) в комментариях указывать всю информацию про переменную, e.g., имя файла, для чего она нужна, как инициализируется, etc.
Другой прием -- собрать все глобальные переменные в одну или несколько структур. Лично мне он не нравится, но многие так делают. Преимущество такого подхода -- легко контролировать разделение переменных между не всеми файлами, а группами файлов, и семантика может быть идентифицирована названием структуры/переменной.