编译器不报告代码中的错误

时间:2012-08-12 21:21:42

标签: c++ visual-studio-2010

我在调用函数时犯了错误。我花了很多时间来理解为什么编译器会忽略我的函数。为什么在编译期间没有报告?编译器可以无错误地构建所有内容,但是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;
}

3 个答案:

答案 0 :(得分:5)

这不是错误,因为它是一个有效的表达式。表达式的结果是一个函数指针。您可以使用如下表达式:

void (*p)() = tstB;

答案 1 :(得分:3)

使用tstB;作为表达式没有任何违法行为,这是一个有效的陈述。它类似于

int main() {
    int a;
    a;
}

答案 2 :(得分:2)

你需要这样称呼它:

tstB();

否则,您只需要一个指向函数的指针,这不是错误。

使用合适的编译标志,GCC会生成warning: statement has no effect [-Wunused-value]