在看comware代码的时候,发现一种之前在学校没用过的C语言数组用法,起码我是本科的时候没见过这么写的,此处mark一下,做个记录。代码举例:
#include <stdio.h>
typedef enum enTest
{
TEST_1,
TEST_2,
TEST_3,
TEST_4,
TEST_5,
}TEST_E;
int TEST_stub(int a, int b)
{
return a+b;
}
typedef int (*TEST_PF)(int a, int b);
static TEST_PF g_apfTest[]=
{
[TEST_1] = TEST_stub,
[TEST_2] = TEST_stub,
[TEST_3] = TEST_stub,
[TEST_4] = TEST_stub,
[TEST_5] = TEST_stub,
};
int main()
{
printf("%d\n",g_apfTest[TEST_3](2,4));
return 0;
}
运行结果:
g_apfTest数组中元素均为函数指针,注意赋值号前面的 [XXX_X],而不是用每一个g_apfTest[XXX_X]元素单独赋值,节省了代码量,另一种直接使用函数指针更节省代码量,但是调用的时候就不方便了,调用的时候需要去数一下函数对应的数组下标才能正确调用,所以这里用枚举值就能调用指定的函数。