我在编程时碰到了这一点,并在函数调用后忘记了括号,但是我只得到了一个警告,但忽略了它:
main.cpp:7:15: warning: expression result unused [-Wunused-value]
if (i == 0) clearDisplay;
^~~~~~~~~~~~
只是做同样的事情
int i = 0;
i;
为什么这不是编译器错误?
#include <iostream>
void clearDisplay(void);
int main(void){
for(int i = 0; i < 2; i++){
if (i == 0) clearDisplay;
}
}
void clearDisplay(void){
std::cout << "test" << std::endl;
}
编辑:
与g++ "Calling" function without parenthesis ( not f() but f; ). Why always returns 1?相对,我不问为什么将其隐式转换为数字,但为什么编译器不会像
if(i=0)
到if(i==0)
那样警告我 最佳答案
您可以将clearDisplay
视为函数的地址。至关重要的是,它将具有一个非零的数值,并且由单个变量组成的语句在语法上是正确的。