取main()函数的地址是不合法的吗?

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.

上面的代码是非法的吗?

Jam*_*nze 3

是的。正如您所引用的,该标准表示您不能使用 main.

还要注意函数的地址匹配"%p"。相应的参数必须具有类型void*;任何其他类型(除了 Maybe char*)都是非法的,并会导致未定义的行为。