C++ C++;预处理器决策
对不起,我知道这是基本的,但也许它不存在,或者我没有用谷歌搜索正确的单词。 是否有一个C++ C++;预处理器决策,c++,c-preprocessor,C++,C Preprocessor,对不起,我知道这是基本的,但也许它不存在,或者我没有用谷歌搜索正确的单词。 是否有一个如果没有(这是ifndef?)一个和以及一个或,这样我就可以做类似的事情: if not DEBUG and MACOS #ifndef和#if做不同的事情,所以这取决于你想要什么#如果未定义与以下名称匹配的预处理器符号,则ifndef为真#if为真 您可以使用标准的&&和| |运算符。我认为类似于#if!已定义(调试)和已定义(MACOS)应能完成 #if !DEBUG && MACROS 或 取决于你在寻
如果没有(这是ifndef
?)一个和以及一个或,这样我就可以做类似的事情:
if not DEBUG and MACOS
#ifndef和#if
做不同的事情,所以这取决于你想要什么<代码>#如果未定义与以下名称匹配的预处理器符号,则ifndef
为真<当以下预处理器表达式的计算结果为非零时,code>#if
为真
您可以使用标准的&&和| |运算符。我认为类似于#if!已定义(调试)和已定义(MACOS)
应能完成
#if !DEBUG && MACROS
或
取决于你在寻找什么。defined()也有帮助
#if !defined(DEBUG) && defined(MACROS)
测试,如果定义了这些宏/值(甚至设置为0表示已定义)。省略“defined()”并根据宏再次测试一个值,如
#if DEBUG==0 && MACOS==1
#error "Spam!"
#endif
#如果!(已定义(调试)和已定义(MACOS))
或
#如果!已定义(调试)&!已定义(MACOS)
取决于您试图评估的内容。查看Boost预处理库。它可以使用预处理器完成大量任务。\if
、\else
和\endif
是通用的。
使用#define
声明,使用#undef
取消声明。
使用#ifdef
检查是否已声明,如果未声明,则使用#ifndef
检查
例如:
#ifndef LABEL
#define LABEL some_value // declares LABEL as some_value
#else
#undef LABEL // undeclare previously declared LABEL...
#define LABEL new_value // to declare a new_value
#endif
#if DEBUG==0 && MACOS==1
#error "Spam!"
#endif
#ifndef LABEL
#define LABEL some_value // declares LABEL as some_value
#else
#undef LABEL // undeclare previously declared LABEL...
#define LABEL new_value // to declare a new_value
#endif