2 回答

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
我覺(jué)得應(yīng)該式函數(shù)指針吧。
FUNC應(yīng)該是一個(gè)宏定義的類(lèi)型。
比如說(shuō)#define FUNC void (*p)...

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
FUNC不是宏定義類(lèi)型
linkSyms 為函數(shù)指針數(shù)組類(lèi)型
應(yīng)該是這樣的:
void assert( int expression ); assert函數(shù)原形
void abort( void );abort函數(shù)原形
double acos(double x);acos函數(shù)原形
char *asctime( const struct tm *timeptr );asctime函數(shù)原形
他們不是同一函數(shù)指針類(lèi)型的,這樣用法是錯(cuò)誤的,因?yàn)楹瘮?shù)指針類(lèi)型,判斷它的類(lèi)型是函數(shù)參數(shù)而不是函數(shù)名,就是說(shuō)只要函數(shù)參數(shù)不一樣,他們就是不同類(lèi)型的:
帖個(gè)例子:
#include "stdafx.h"
#include "stdio.h"
typedef void (* FUNC)(int*); //把一有int指針類(lèi)型參數(shù)的函數(shù)指針類(lèi)型用*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};//函數(shù)名就是可以當(dāng)作是函數(shù)指針,或者叫做函數(shù)入口地址
//在這里的3個(gè)函數(shù)因?yàn)樗鼈兊膮?shù)類(lèi)型相同,所以他們?yōu)橥缓瘮?shù)指針類(lèi)型
int i=10;
a[0](&i);//執(zhí)行one函數(shù)
a[1](&i);//執(zhí)行two函數(shù)
a[2](&i);//執(zhí)行Three函數(shù)
printf("%d\n",i);
return 0;
}
添加回答
舉報(bào)