Возможно, так как я не мог найти правильные ключевые слова, мне не удалось уточнить мои сомнения в Google.Нужно ли переопределять препроцессор в родительских проектах?
Скажем, у меня есть 2 проекта на С ++; projA и projB. В exmpl.h файла в projA, есть это условие:
class myClass
{
...
#ifdef MYVAR
virtual ~myClass() {}
#endif
}
Я определяю MYVAR
как настройки проекта и скомпилировать projA для создания projA.a статической библиотеки.
Теперь, из projB, мне нужно использовать exmpl.h
projA. Просто я включаю его и компилирую projB, используя статическую библиотеку projA.a.
Однако представьте, что в projB я сделал не определеноMYVAR
.
Что произойдет в этом случае? Прописывает ли projB код в пределах
#ifdef
, но использует статическую библиотеку, которая была скомпилирована с кодом в пределах#ifdef
?Итак, это ошибка и может вызвать неожиданное поведение?
Нужно ли определять все препроцессоры, которые были использованы в подпроектах, также во всех проектах, которые их используют?
Спасибо.
О, мой. Просто не делай этого. Похож на серьезную проблему XY. –
Один вопрос на вопрос пожалуйста. –