2015-05-18 3 views
1

У меня есть несколько исходных и заголовочных файлов, содержащих код, который должен быть скомпилирован в зависимости от того же параметра. Эта опция может быть установлена ​​сУправление кодом с использованием #define

#define myOption

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

UPD

В комментариях я нашел вариант, заголовок файла, который содержит myOption может быть stdafx.h. Но это не очень хорошая практика, насколько я могу видеть, потому что в проектах CPP с включенным заголовком precompile у меня могут быть, например, некоторые устройства с кодом C с отключенным предварительно скомпилированным заголовком.

+1

Это зависит от того, как настроен ваш код, но это один из случаев, когда использование предварительно скомпилированных заголовков ('stdafx.h',' stdafx.cpp') пригодится. Здесь вы можете разместить обычно включенные заголовки и общие макросы препроцессора. – CoryKramer

+1

Вы также можете установить его как вариант компилятора проекта. – crashmstr

+0

Если вы используете утилиту типа cmake, вы можете определить символы в make-файле. См. Http://stackoverflow.com/questions/9017573/define-preprocessor-macro-through-cmake – NathanOliver

ответ

2

Как упоминалось в @Paranaix, вы можете предоставить определение препроцессора для компилятора как аргумент командной строки, например -DmyOption. Предположим, вы используете Visual Studio, вы можете открыть project properties->C/C++->Preprocessor->Preprocessor Definitions и поместить myOption в этот список. Он автоматически добавляет аргумент -DmyOption для компилятора. Поэтому каждый исходный файл в вашем проекте теперь может проверить этот параметр.

Смежные вопросы