我正在尝试了解预处理器语法。它的代码非常简单,可以返回“ ON”或“ OFF”。但是,我对这种情况到底是什么完全感到困惑?

我理解C的条件语句如下:

? x : y


如果条件?返回-替换? x或y表示这行代码如下:

#define ONOFF(a) ((a) ? "ON" : "OFF")


我不明白这里必须满足什么条件?条件a必须不是null吗?

最佳答案

TrueFlase可以更完美地表示为10。如我所见,你已经宣布

#define ONOFF(a) ((a) ? "ON" : "OFF")


您的条件是(a),如果true的值不为零,则为a;如果a为0,则为false。

在您的程序中,这意味着

int a=1;
char *str;
str=ONOFF(a);


发生的替代是

 int a=1;
 char *str;
 str=((a) ? "ON" : "OFF")// here a=1


因为这里a1并且
1为true,str获得值ON。如果a为0,则str将获得值OFF

关于c - 预处理程序C宏语法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37321919/

10-12 15:03