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;
}
添加回答
舉報