Документ взаимоисключающий определяет

Я пишу небольшую программу на C и хочу документировать ее, чтобы другие могли изменить некоторые детали. Я написал файл config.h с #defines, которые позволяют некоторые операции или нет, некоторые из них являются взаимоисключающими, другие нет.

Пример не взаимоисключающего:

#define USE_A
#define USE_B
#define USE_C

Пример взаимоисключающего:

#define BUILD_FULL
#define BUILD_COMPACT

До сих пор я выбирал конфигурацию программы для компиляции, документируя функции, которые я не хочу использовать, например:

//#define BUILD_FULL
#define BUILD_COMPACT

построить компактный исполняемый файл.

Как я могу написать документацию для закомментированных функций?

Я старался:

#define USE_A //!< Special Feature
#define USE_B //!< Special Feature
//#define USE_C //!< Special Feature

Я скомпилировал это без USE_C но, очевидно, я потерял документацию, потому что doxygen не проанализировал ее. Как бы вы переписали #define поток, если я неправильно понимаю правильный способ использования определений?

1 ответ

Решение

Вы можете проверить значение макроса, а не только его наличие. Например, используйте 0, чтобы отключить опцию, или 1, чтобы включить ее. Затем используйте #if вместо #ifdef проверить состояние.

#define USE_A 1    //!< Special Feature
#define USE_B 1    //!< Special Feature
#define USE_C 0    //!< Special Feature

#if USE_A
...
#elif USE_C
...
#endif  
Другие вопросы по тегам