说,类似这样:
int SayHelloThenReturnTen(void) {
puts("Hello world");
return 10;
}
然后再说:
((void(*)(void))SayHelloThenReturnTen)();
这样安全吗?通过强制转换为void指针“破坏”返回值是否安全?这是安全的跨平台平台,还是undefined behavior?
这是未定义的行为,因为您正在通过不兼容的函数指针类型调用函数。
如果您不想使用返回值,那就不要使用它:
SayHelloThenReturnTen();
或将结果表达式转换为void
:
(void)SayHelloThenReturnTen();