如果一个未使用的函数参数是指向函数的指针,则是其实际参数所需的定义

If an unused function parameter is a pointer-to-function, is a definition required for its actual argument?

本文关键字:函数 参数 定义 指针 未使用 一个 如果      更新时间:2023-10-16

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

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

如果"全程序优化"处于关闭状态,MSVC14会成功构建它,但如果"链接时间代码生成"处于打开状态,则会出现错误"未解析的外部符号void __cdecl foo(void)"。

这是odr使用,所以您需要foo的定义。

否则,函数指针应该保持什么"值"?foo在内存中的位置?

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