C++预处理器决策
抱歉,我知道这是基本的,但也许它不存在,或者我没有在谷歌上搜索正确的单词。 是否有一个if not
(是ifndef
?)一个AND
和一个OR
,这样我就可以做一些事情喜欢:
if not DEBUG and MACOS
Sorry I know this is basic, but perhaps it doesn't exist or I'm not googling the right words.
Is there and an if not
(is that ifndef
?) an AND
and an OR
so I could do something like:
if not DEBUG and MACOS
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
我认为类似
#if !define(DEBUG) &&定义(MACOS)
应该可以做到。I think something like
#if !defined(DEBUG) && defined(MACOS)
should do it.#ifndef 和 #if
做不同的事情,所以这取决于你想要什么。当没有与后面的名称匹配的已定义预处理器符号时,#ifndef
为 true。当以下预处理器表达式的计算结果为非零时,#if
为 true。您可以使用标准 &&和 ||运营商。
#ifndef and #if
do different things so it depends on what you want.#ifndef
is true when there is no defined preprocessor symbol that matches the name following.#if
is true when the following preprocessor expression evaluates to non-zero.You can use the standard && and || operators.
测试是否定义了这些宏/值(即使设置为 0 也意味着已定义)。省略“define()”并根据您的宏再次测试一个值,例如
tests, if those macros/values are defined (even set to 0 means defined). Leave out the "defined()" and test again a value, depending on your macros, like
或者
取决于您正在寻找什么。 Defined() 也可以提供帮助
or
depending on what you are looking for. defined() can also help
#if !(已定义(DEBUG) && 已定义(MACOS))
或
#if !define(DEBUG) && !define(MACOS)
取决于您要评估的内容。
#if !(defined(DEBUG) && defined(MACOS))
or
#if !defined(DEBUG) && !defined(MACOS)
depending on what you're trying to evaluate.
#if
、#else
和#endif
是通用的。使用
#define
进行声明,使用#undef
取消声明。使用
#ifdef
检查是否已声明,使用#ifndef
检查是否未声明。例子:
#if
,#else
and#endif
are general.Use
#define
to declare and#undef
to undeclare.Use
#ifdef
to check if is declared and#ifndef
to check, if is not declared.Example:
查看 Boost 预处理库。它可以使用预处理器完成大量任务。
Check out the Boost preprocessing library. It can accomplish a large number of tasks using the preprocessor.