I have the following code:
long fp = ...
void (*ptr)(long, char*, char*) = fp;
长的 fp
是一个正确的函数指针,它作为一个长整型传递。我得到了标准的“从整数转换而来的指针没有显式类型转换”的警告。我想能够编译通过:
-std=iso9899:1990 -pedantic-errors
这会将警告转化为错误。问题是:什么是正确的类型转换?我尝试了各种猜测,例如:
void (*ptr)(long, char*, char*) = (void)(*)(long, char*, char*) fp;
但是似乎找不到合适的。
fp
一开始就是正确的函数指针,为什么它会被存储在一个长整型中呢?也许你应该集中精力确保输入正确,而不是试图事后想出一个权宜之计。 - Mr Lister