在我的代码中,我经常有这样的结构:
#ifdef SOME_MACRO int some_value=1; #else int some_value=0; #endif // ... if (some_value) { // ... }
为了清楚起见,我希望有这样的东西:
if (MACRO_IS_DEFINED(SOME_MACRO)) { // ... }
这可能吗?如果是的话,是怎么做到的?
wn9m85ua1#
一般的最佳实践是将预处理器“编译器开关”(#ifdef)和其他类似的预处理器技巧远离应用程序逻辑,理想情况下将其集中到.c文件的顶部或将其放置在一些合适的头中。或者通过外部版本控制而不是预处理器来处理程序的不同版本。在这种情况下,它可能是这样的:
#if defined(SOME_MACRO) && SOME_MACRO #define SOME_MACRO_IS_SET 1 #else #define SOME_MACRO_IS_SET 0 #endif
然后是if(SOME_MACRO_IS_SET)。
if(SOME_MACRO_IS_SET)
1条答案
按热度按时间wn9m85ua1#
一般的最佳实践是将预处理器“编译器开关”(#ifdef)和其他类似的预处理器技巧远离应用程序逻辑,理想情况下将其集中到.c文件的顶部或将其放置在一些合适的头中。或者通过外部版本控制而不是预处理器来处理程序的不同版本。
在这种情况下,它可能是这样的:
然后是
if(SOME_MACRO_IS_SET)
。