Можете ли вы помочь мне со следующей проблемой?
У меня есть файл log.cpp, в который включены разные файлы в проект. Мне нужно объявить define в одном из тех файлов, который должен влиять на log.cpp, без фактического изменения в log.cpp или log.h.
Как я могу это сделать?
Решение с предварительно скомпилированным заголовком не приемлемо.
И еще один вопрос, как я могу определить статическую функцию?
Я имею в виду, если у меня есть CClass::Func
называется в моем коде, как я могу определить его для перенаправления на что-то еще?
Если вы хотите повлиять на заголовок, вы можете поместить это определение перед включением:
#define SOMEDEFINE SOMEVALUE
#include log.h
// May want to remove or change our define here
#undef SOMEDEFINE
Это предполагает, что вы имели в виду, что вы включаете log.h, так как вы не хотите включать cpp из других файлов. Идея наличия отдельных файлов .h и .cpp заключается в том, что .h — это интерфейс, который видят все модули компиляции, тогда как cpp — это сам код, который должен быть скомпилирован только один раз, и не должен отличаться в зависимости от того, какой модуль компиляции вы используете. ссылаясь на это.
Со всеми известными мне компиляторами C ++ вы можете #define
символы в командной строке. Обычно это делается с помощью -D
вариант.