2015-12-24 5 views
2

Ищет способ сделать условное статическое объявление. Я хочу, чтобы некоторые переменные в моей программе были статичными при компиляции в версии и глобальном для тестирования при компиляции в отладке. Поскольку я не хочу, чтобы все мои статические переменные стали глобальными при отладке, поэтому я подумал, что, возможно, я могу сделать макрос, который определяет переменную static в соответствии с флагом компиляции. Я хочу что-то вроде этого:условное определение статических переменных

#define STATIC(def) (def) ? : static 

Может ли это сделать? Использование стандарта C 89

+0

не является условный оператор является время выполнения одного? –

ответ

3

Как насчет использования препроцессора #if? Вы могли бы сделать что-то вроде этого:

#if YOUR_CONDITION 
#define STATIC(def) static def 
#else 
#define STATIC(def) def 
#endif 

Вы могли бы, в вашем случае, а также использовать #ifdef и #ifndef:

#ifdef DEBUG_MODE /*Define as static when DEBUG_MODE is defined*/ 
#define STATIC(def) static def 
#else 
#define STATIC(def) def 
#endif 
Смежные вопросы