我怎样才能保证一个#define比另一个大?

时间:2018-06-15 13:51:11

标签: arduino c-preprocessor

#define MY_CONST 20
#define OTHER_CONST 10

我的代码只有MY_CONST > OTHER_CONST才有意义。如何使用预处理器保证这一点?有这样的命令吗?

#assert MY_CONST < OTHER_CONST

2 个答案:

答案 0 :(得分:15)

  

有这样的命令吗?

     

#assert MY_CONST&lt; OTHER_CONST

#if OTHER_CONST >= MY_CONST
#error "Error, OTHER_CONST >= MY_CONST"
#endif

答案 1 :(得分:0)

正如@attersson所说的#if会这样做。 (作为习惯,请尝试在宏中加上括号,以保证对更复杂的表达式求值的顺序。this answer shows why。)

#include <stdio.h>
#define A 10
#define B 11
#if (A) > (B)
  #define RES "yes"
#else
  #define RES "no"
#endif

int
main(int argc, char *argv[])
{
        printf("is A larger? %s\n", RES);
        return 0;
}