在宏函数中使参数无效是合法的吗?

时间:2018-10-30 02:50:54

标签: c c-preprocessor

我在下面有预处理器的代码:

var t = document.getElementById("tThresh");
var tempThresh = t.options[t.selectedIndex].value;
if (obj.temperature > tempThresh){
    led1.on()
    obniz.display.print("The temperature is too high")              
    obniz.display.clear();
};

这在C语言中合法吗?

1 个答案:

答案 0 :(得分:4)

是的,这是合法的,但可能未达到您的期望。

#define MYFUNC(void) getFunc(void)

这定义了一个名为MYFUNC的宏,该宏带有一个参数,在本例中,您已将其称为void。此宏使用与传递给它的参数相同的参数调用函数getFunc

在这种情况下打电话

MYFUNC( "Hello" );

将导致与

相同

getFunc( "Hello" );

目前尚不清楚这是否是您所期望的。使用参数名将是一个糟糕的选择,因为它会使任何读者感到困惑。 void是C语言中的关键字,但在C预处理器中没什么特别的。