Включая один исходный файл C в другом?

Это в порядке (или даже рекомендуемая/хорошая практика) к #include a .c файл в другом .c файл?

101
задан JL2210 23 September 2019 в 11:27
поделиться

0 ответов

он в порядке? да, это скомпилирует

, это рекомендуется? нет-.c файлы компилируют в .obj файлы, которые соединены после компиляции (компоновщиком) в исполняемый файл (или библиотека), таким образом, нет никакой потребности включать один.c файл в другого. Что Вы, вероятно, хотите сделать, вместо этого должен сделать.h файл, который перечисляет функции/переменные, доступные в другом.c файле, и включайте.h файл

49
ответ дан Steven A. Lowe 24 November 2019 в 04:42
поделиться

Нет.

В зависимости от Вашей среды сборки (Вы не определяете), можно найти, что она работает точно способом, которым Вы хотите.

Однако существует много сред (оба IDE и много Make-файлов ручной работы), которые ожидают компилировать *.c - если это произойдет, то Вы, вероятно, закончите с ошибками компоновщика, должными копировать символы.

, Как правило, этой практики нужно избежать.

, Если Вы абсолютно должны #include источник (и обычно его нужно избежать), используйте различный суффикс файла для файла.

11
ответ дан Andrew Edgecombe 24 November 2019 в 04:42
поделиться

Расширение файла не имеет значения для большинства компиляторов C, таким образом, это будет работать.

Однако в зависимости от Вашего make-файла или настроек проекта включенный c файл мог бы генерировать файл отдельного объекта. При соединении, который мог бы вести для удвоения определенных символов.

5
ответ дан HS. 24 November 2019 в 04:42
поделиться

Язык C не запрещает такой #include, но получающаяся единица перевода все еще должна быть допустимым C.

я не знаю, какую программу Вы используете с .prj файлом. Если Вы используете что-то, любят, "делают" или Visual Studio или что бы то ни было, просто удостоверьтесь, что Вы устанавливаете ее список файлов, которые будут скомпилированы без того, который не может скомпилировать независимо.

1
ответ дан Windows programmer 24 November 2019 в 04:42
поделиться

Включая файл C в другой файл законно, но не желательная вещь сделать, если Вы не знаете точно, почему Вы делаете это и чего Вы пытаетесь достигнуть.
я почти уверен что, если Вы отправите здесь причину, что позади Вашего вопроса сообщество найдет Вас другим более соответствующим способом достигнуть Вас цель (отмечают "почти", так как возможно, что это - решение, учитывая контекст).

По тому, как я пропустил вторую часть вопроса. Если файл C включен в другой файл, и в то же время, включенное в проект, Вы, вероятно, закончите с дублирующейся проблемой символа, почему соединение объектов, т.е. той же функции будет определено дважды (если они все статичные).

0
ответ дан Ilya 24 November 2019 в 04:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: