2 回答
TA贡献1789条经验 获得超10个赞
FUNC不是宏定义类型
linkSyms 为函数指针数组类型
应该是这样的:
void assert( int expression ); assert函数原形
void abort( void );abort函数原形
double acos(double x);acos函数原形
char *asctime( const struct tm *timeptr );asctime函数原形
他们不是同一函数指针类型的,这样用法是错误的,因为函数指针类型,判断它的类型是函数参数而不是函数名,就是说只要函数参数不一样,他们就是不同类型的:
帖个例子:
#include "stdafx.h"
#include "stdio.h"
typedef void (* FUNC)(int*); //把一有int指针类型参数的函数指针类型用*FUNC代替
void one(int *i)
{
*i=*i+100;
}
void two(int *i)
{
*i=*i+200;
}
void Three(int *i)
{
*i=*i+300;
}
int main(int argc, char* argv[])
{
FUNC a[3]={one,two,Three};//函数名就是可以当作是函数指针,或者叫做函数入口地址
//在这里的3个函数因为它们的参数类型相同,所以他们为同一函数指针类型
int i=10;
a[0](&i);//执行one函数
a[1](&i);//执行two函数
a[2](&i);//执行Three函数
printf("%d\n",i);
return 0;
}
添加回答
举报