五分钟前我做过一些我从未做过的事情(这不是关于性......)看代码:
// g++ DeathToAllButMetal.cc
#include<iostream>
void DeathToAllButMetal(){
std::cout << "A MASTERPIECE MADE BY STEEL PANTHER" << std::endl;
}
int main(){
DeathToAllButMetal();
DeathToAllButMetal;
return 0;
}
你看到我在第二个DeathToAllButMetal
忘记了“()”,令人惊讶的是,编译器并没有对我大喊大叫。所以对于编译器来说,这行代码意味着什么,但是什么呢?因为在跑步时,方法没有被调用......这看起来是一个基本问题,但我不记得过去曾经看过这个问题。
答案 0 :(得分:14)
这只是一个无操作。函数的名称在该上下文中衰减为指向该函数的指针,但由于您没有对它执行任何操作,因此不会发生任何事情。如果您调高警告级别,您可能会收到“声明无效”的消息。例如,clang ++说(即使没有标志):
example.cpp:11:3: warning: expression result unused [-Wunused-value]
DeathToAllButMetal;
^~~~~~~~~~~~~~~~~~
1 warning generated.
G ++也警告过,但我需要添加-Wall
:
example.cpp: In function ‘int main()’:
example.cpp:11: warning: statement is a reference, not call, to function ‘DeathToAllButMetal’
example.cpp:11: warning: statement has no effect