Min*_*s97 3 c gcc function-pointers named-parameters visual-c++
在MSVC和gcc(GCC)4.8.3 20140911上,以下编译和运行正常:
#include <stdio.h>
int func(int a, int b){
return 0;
}
int main(void){
int (*funcPointer)(int a, int b);
funcPointer = func;
printf("funcPointer = %p\n", funcPointer);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这样的行为是定义明确的,还是非标准的,并且函数指针类型具有命名参数(即名称及其参数列表中的类型)实际上是非法的?
您可以在函数指针中有一个参数。这是完全有效的。参数列表与要调用的函数的列表匹配,名称只是可选的。
也可以写成
int (*funcPointer)(int,int);
Run Code Online (Sandbox Code Playgroud)
我的意思是
int (*funcPointer)(int a, int b);
Run Code Online (Sandbox Code Playgroud)
这是有效的,您可以通过致电验证
int res = funcPointer(3,4);
Run Code Online (Sandbox Code Playgroud)
然后返回
int func(int a, int b){
return a+b;
}
Run Code Online (Sandbox Code Playgroud)