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