如果未使用的函数参数是指向函数的指针,那么它的实际参数是否需要定义?

时间:2015-12-17 16:50:07

标签: c++ visual-studio visual-studio-2015

根据C ++标准,以下是完整的程序吗?

 void foo();
 void bar( void(*)() ) {}
 int main() { bar(foo); }

如果整个程序优化已关闭,MSVC14会成功构建它,但会出现错误"未解析的外部符号void __cdecl foo(void)"如果启用了链接时间代码生成。

1 个答案:

答案 0 :(得分:2)

那是 odr-use ,所以你需要foo的定义。

否则函数指针应该保持什么“值”?记忆中foo在哪里?

该定义触发它被赋予一个地址,而你却没有。