У меня есть папка, которая содержит 3 файла:
- main.c
- файл1.с
- файл2.с
Идея состоит в том, чтобы скомпилировать только один файл на основе символа, независимо от того, определен он или нет.
в main.c я добавил следующие строки:
#ifdef MY_SYMBOL
#include "file1.c"
#else
#include "file2.c"
#endif
Проблема, которую я обнаружил, заключается в том, что когда MY_SYMBOL определен, file1.c компилируется дважды, потому что в make-файле упоминается о компиляции всех исходных файлов внутри каждой папки.
Ограничение в том, что я не должен изменять make-файл! Итак, чтобы избежать этого, я изменил расширение file1.c и file2.c на file1.h и file2.h< /strong> соответственно, сохранив их содержимое (определение всех приватных функций), и я обновил содержимое main.c следующим образом:
#ifdef MY_SYMBOL
#include "file1.h"
#else
#include "file2.h"
#endif
Принимая во внимание вышеуказанное ограничение, является ли последнее предложение лучшим?
Обратите внимание, что file1.c и file2.c содержат одни и те же функции, но с разной реализацией.