是否允许获取未定义函数的地址?
Is taking the address of an undefined function allowed?
下面的代码定义了整个程序。这个程序是否符合标准(最新版本)?
void foo();
int main()
{
auto x = &foo;
return 0;
}
Here 是一个方便的快捷方式。
这段代码没有实际用处,我只是好奇。
Every function that is odr-used requires a definition(无需诊断)。取一个函数的地址是一个 odr-use,所以这个程序表现出未定义的行为。通过优化,地址被优化,因此它没有链接器错误,但它不需要工作。
下面的代码定义了整个程序。这个程序是否符合标准(最新版本)?
void foo();
int main()
{
auto x = &foo;
return 0;
}
Here 是一个方便的快捷方式。
这段代码没有实际用处,我只是好奇。
Every function that is odr-used requires a definition(无需诊断)。取一个函数的地址是一个 odr-use,所以这个程序表现出未定义的行为。通过优化,地址被优化,因此它没有链接器错误,但它不需要工作。