sha*_*oth 7 c++ program-entry-point function
根据这个答案, 使用函数main()是非法的(§3.6.1.3),如果它的名字出现在一个可能被评估的表达式(§3.2)中,则使用一个函数.
假设我有这个代码:
printf( "%p", &main );
Run Code Online (Sandbox Code Playgroud)
其中函数名称main()出现在表达式中&main.
上面的代码是非法的吗?
是的。正如您所引用的,该标准表示您不能使用
main.
还要注意函数的地址不匹配"%p"。相应的参数必须具有类型void*;任何其他类型(除了 Maybe char*)都是非法的,并会导致未定义的行为。