gpt4 book ai didi

c++ - 为什么当我使用不带括号的函数时 C++ 编译器不报错?

转载 作者:可可西里 更新时间:2023-11-01 18:04:07 25 4
gpt4 key购买 nike

我在看一个 friend 发给我的一些代码,他说:“它可以编译,但不起作用”。我看到他使用了没有括号的函数,像这样:

void foo(){
cout<< "Hello world\n";
}

int main(){
foo; //function without parentheses
return 0;
}

我首先说的是“使用括号,你必须这样做”。然后我测试了该代码 - 它确实可以编译,但在执行时不起作用(没有显示“Hello world”)。

那么,为什么它可以编译(编译器 GCC 4.7 根本没有警告),但为什么不起作用?

最佳答案

如果您将警告级别设置得足够高,它肯定会发出警告。

函数名的计算结果为函数的地址,并且是一个合法的表达式。通常保存在一个函数指针中,

void (*fptr)() = foo;

但这不是必需的。

关于c++ - 为什么当我使用不带括号的函数时 C++ 编译器不报错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11082329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com