宏定义就是简单的替换,之前没见过带符号的替换,看到这个有点懵了,记录如下。这里用 n, 代替 FNINFO(n,l),用的很巧妙。
#define FNINFO(n,l) n,
MeasValue (*(MeasFnTbl[]))() = {
# include <names.h>
};
/*
以下为names.h中内容:
FNINFO( doMinMaxMidHiLo, MIN )
FNINFO( doMinMaxMidHiLo, MAX )
FNINFO( doMinMaxMidHiLo, PEAKTOPEAK )
FNINFO( doMinMaxMidHiLo, MID )
FNINFO( doMinMaxMidHiLo, HIGH )
FNINFO( doMinMaxMidHiLo, LOW )
FNINFO( amplitude, AMPLITUDE )
FNINFO( mean, MEAN )
其中
#define MIN 0
#define MAX 1
#define PEAKTOPEAK 2
#define MID 3
#define HIGH 4
#define LOW 5
#define AMPLITUDE 6
利用宏定义替换头文件中内容:
FNINFO( doMinMaxMidHiLo, MIN ) 替换成 doMinMaxMidHiLo,
FNINFO( doMinMaxMidHiLo, MAX ) 替换成doMinMaxMidHiLo,
FNINFO( doMinMaxMidHiLo, PEAKTOPEAK ) 替换成doMinMaxMidHiLo,
......
上面那个函数指针数组就变成了:
MeasValue (*(MeasFnTbl[]))() = {
doMinMaxMidHiLo,
doMinMaxMidHiLo,
doMinMaxMidHiLo,
};
它是这样使用的:
typedef Double MeasValue;
MeasValue value = (MeasValue) (*MeasFnTbl[meas])(Pwfm, Pqual); // meas就是一个int型
*/
#define FNINFO(n,l) n,
MeasValue (*(MeasFnTbl[]))() = {
# include <names.h>
};
/*
以下为names.h中内容:
FNINFO( doMinMaxMidHiLo, MIN )
FNINFO( doMinMaxMidHiLo, MAX )
FNINFO( doMinMaxMidHiLo, PEAKTOPEAK )
FNINFO( doMinMaxMidHiLo, MID )
FNINFO( doMinMaxMidHiLo, HIGH )
FNINFO( doMinMaxMidHiLo, LOW )
FNINFO( amplitude, AMPLITUDE )
FNINFO( mean, MEAN )
其中
#define MIN 0
#define MAX 1
#define PEAKTOPEAK 2
#define MID 3
#define HIGH 4
#define LOW 5
#define AMPLITUDE 6
利用宏定义替换头文件中内容:
FNINFO( doMinMaxMidHiLo, MIN ) 替换成 doMinMaxMidHiLo,
FNINFO( doMinMaxMidHiLo, MAX ) 替换成doMinMaxMidHiLo,
FNINFO( doMinMaxMidHiLo, PEAKTOPEAK ) 替换成doMinMaxMidHiLo,
......
上面那个函数指针数组就变成了:
MeasValue (*(MeasFnTbl[]))() = {
doMinMaxMidHiLo,
doMinMaxMidHiLo,
doMinMaxMidHiLo,
};
它是这样使用的:
typedef Double MeasValue;
MeasValue value = (MeasValue) (*MeasFnTbl[meas])(Pwfm, Pqual); // meas就是一个int型
*/