Заголовочные файлы C с одинаковыми декларациями, но разными реализациями - PullRequest
0 голосов
/ 27 июля 2011

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

Ответы [ 3 ]

2 голосов
/ 27 июля 2011

Если оба заголовочных файла в точности совпадают, вам не нужно поддерживать два заголовочных файла.Вы можете сохранить только одну копию.Какой бы код ни включал заголовочный файл, он может включать только этот единственный заголовочный файл.

Вы всегда можете указать, какой .c файл вы хотите скомпилировать при компиляции.В gcc вы можете упомянуть файл C для компиляции в командной строке.В Visual Studio вы можете включить правильный файл C.

2 голосов
/ 27 июля 2011

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

2 голосов
/ 27 июля 2011

Вы всегда можете указать файл .c или .o, с которым вы будете ссылаться во время компиляции / ссылки, например,

gcc -o myexe file1.c/file1.o
or
gcc -o myexe file2.c/file2.o

, вы даже можете сделать это другой директивой make, если у вас естьmake-файл, если у вас тот же заголовочный файл, но 2 разных реализации.Я бы порекомендовал просто использовать 1 заголовочный файл и изменить базовую реализацию, нет смысла иметь 2 заголовка с похожими объявлениями.

...