我正在尝试在C或C++中在编译时初始化函数指针的全局数组.像这样的东西:
module.h中
typedef int16_t (*myfunc_t)(void);
extern myfunc_array[];
Run Code Online (Sandbox Code Playgroud)
module.cpp
#include "module.h"
int16_t myfunc_1();
int16_t myfunc_2();
...
int16_t myfunc_N();
// the ordering of functions is not that important
myfunc_array[] = { myfunc_1, myfunc_2, ... , myfunc_N };
Run Code Online (Sandbox Code Playgroud)
func1.cpp,func2.cpp,... funcN.cpp(指向单个func.cpp文件的符号链接,以便创建不同的目标文件:func1.o,func2.o,func3.o,...,funcN .o.NUMBER定义使用g++ -DNUMBER=N)
#include "module.h"
#define CONCAT2(x, y) x ## y
#define CONCAT(x, y) CONCAT2(x, y)
int16_t CONCAT(myfunc_, NUMBER)() { ... }
Run Code Online (Sandbox Code Playgroud)
使用g ++ -DNUMBER = N编译时,预处理后变为:
func1.cpp
...
int16_t myfunc_1() { ... }
Run Code Online (Sandbox Code Playgroud)
func2.cpp
...
int16_t myfunc_2() { ... } …Run Code Online (Sandbox Code Playgroud)