定义预处理器检查

发布于 2024-09-15 19:26:36 字数 351 浏览 5 评论 0原文

我可以检查预定义值,例如:

#ifdef SOME_VAR
  // Do something
#elif
  // Do something 2
#endif

如果我必须检查 2 个值而不是 1 个值。是否有任何运算符:

#ifdef SOME_VAR and SOME_VAR2
  // ...
#endif

或者我必须写:

#ifdef SOME_VAR
   #ifdef SOME_VAR2
      // At least! Do something
   #endif
#endif

I can check predefined value like:

#ifdef SOME_VAR
  // Do something
#elif
  // Do something 2
#endif

If I have to check 2 values instead of 1. Are there any operator:

#ifdef SOME_VAR and SOME_VAR2
  // ...
#endif

Or I have to write:

#ifdef SOME_VAR
   #ifdef SOME_VAR2
      // At least! Do something
   #endif
#endif

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(5

梦旅人picnic 2024-09-22 19:26:36

在这种情况下使用的是标准短路运算符(&&)以及define关键字。

#if defined(SOME_VAR) && defined(SOME_VAR2)
    /* ... */
#endif

同样,普通的 not 运算符 (!) 用于求反:

#if defined(SOME_VAR) && !defined(SOME_OTHER_VAR)
    /* ... */
#endif

The standard short-circuiting and operator (&&) along with the defined keyword is what is used in this circumstance.

#if defined(SOME_VAR) && defined(SOME_VAR2)
    /* ... */
#endif

Likewise, the normal not operator (!) is used for negation:

#if defined(SOME_VAR) && !defined(SOME_OTHER_VAR)
    /* ... */
#endif
忆悲凉 2024-09-22 19:26:36

您可以使用define运算符:

#if defined (SOME_VAR) && defined(SOME_VAR2)

#endif

#ifdef#ifndef只是define运算符的快捷方式。

You can use the defined operator:

#if defined (SOME_VAR) && defined(SOME_VAR2)

#endif

#ifdef and #ifndef are just shortcuts for the defined operator.

浊酒尽余欢 2024-09-22 19:26:36

你可以写:

#if defined(SOME_VAR) && defined(SOME_VAR2)
// ...
#endif

You can write:

#if defined(SOME_VAR) && defined(SOME_VAR2)
// ...
#endif
短暂陪伴 2024-09-22 19:26:36

#if 已定义(A) &&定义(B)

#if defined(A) && defined(B)

岁月无声 2024-09-22 19:26:36

一种替代方法是不使用 #ifdef 而只使用 #if,因为“空符号”在 #if 测试中计算结果为 false。

因此,你可以这样做,

#if SOME_VAR && SOME_OTHER_VAR
    // -- things
#endif

但这样做的最大副作用是,你不仅需要 #define 变量,还需要将它们定义为某种东西。例如,

#define SOME_VAR         1
#define SOME_OTHER_VAR   1

注释掉其中任何一个 #define 都会使上面的 #if 测试失败(只要未评估所包含的内容;编译器不会崩溃或出错或发生任何情况)。

One alternative is to get away from using #ifdef and just use #if, since "empty symbols" evaluate to false in the #if test.

So instead you could just do

#if SOME_VAR && SOME_OTHER_VAR
    // -- things
#endif

But the big side effect to that is that you not only need to #define your variables, you need to define them to be something. E.g.

#define SOME_VAR         1
#define SOME_OTHER_VAR   1

Commenting out either of those #defines will make the above #if test fail (insofar as the enclosed stuff not being evaluated; the compiler will not crash or error out or anything).

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