我在调用函数时犯了错误。我花了很多时间来理解为什么编译器会忽略我的函数。为什么在编译期间没有报告?编译器可以无错误地构建所有内容,但是tere不是带有“2”的消息框。
#include "stdafx.h"
#include <windows.h>
void tstB()
{
MessageBox(NULL, "2", NULL, NULL);
}
int _tmain(int argc, _TCHAR* argv[])
{
MessageBox(NULL, "1", NULL, NULL);
tstB;
return 0;
}
答案 0 :(得分:5)
这不是错误,因为它是一个有效的表达式。表达式的结果是一个函数指针。您可以使用如下表达式:
void (*p)() = tstB;
答案 1 :(得分:3)
使用tstB;
作为表达式没有任何违法行为,这是一个有效的陈述。它类似于
int main() {
int a;
a;
}
答案 2 :(得分:2)
你需要这样称呼它:
tstB();
否则,您只需要一个指向函数的指针,这不是错误。
使用合适的编译标志,GCC会生成warning: statement has no effect [-Wunused-value]