C++预处理器决策

发布于 2024-09-04 22:16:59 字数 192 浏览 3 评论 0原文

抱歉,我知道这是基本的,但也许它不存在,或者我没有在谷歌上搜索正确的单词。 是否有一个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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

海的爱人是光 2024-09-11 22:16:59

我认为类似 #if !define(DEBUG) &&定义(MACOS) 应该可以做到。

I think something like #if !defined(DEBUG) && defined(MACOS) should do it.

遮了一弯 2024-09-11 22:16:59

#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.

稍尽春風 2024-09-11 22:16:59
#if !defined(DEBUG) && defined(MACOS)
#error "Ouch!"
#endif

测试是否定义了这些宏/值(即使设置为 0 也意味着已定义)。省略“define()”并根据您的宏再次测试一个值,例如

#if DEBUG==0 && MACOS==1
#error "Spam!"
#endif
#if !defined(DEBUG) && defined(MACOS)
#error "Ouch!"
#endif

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

#if DEBUG==0 && MACOS==1
#error "Spam!"
#endif
守不住的情 2024-09-11 22:16:59
#if !DEBUG && MACROS

或者

#if !DEBUG & !MACROS

取决于您正在寻找什么。 Defined() 也可以提供帮助

#if !defined(DEBUG) && defined(MACROS)
#if !DEBUG && MACROS

or

#if !DEBUG & !MACROS

depending on what you are looking for. defined() can also help

#if !defined(DEBUG) && defined(MACROS)
小草泠泠 2024-09-11 22:16:59

#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.

陈甜 2024-09-11 22:16:59

#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, #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:

#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
無心 2024-09-11 22:16:59

查看 Boost 预处理库。它可以使用预处理器完成大量任务。

Check out the Boost preprocessing library. It can accomplish a large number of tasks using the preprocessor.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文