我正在构建一段旨在供许多项目使用的代码。在C和C ++中。 (已经处理了#ifdef __cplusplus的内容。
该项目利用了函数的回调和指针。太简单了,我想使用函数的typedef。例如
标题:
typedef void(MyFunctionTypedef)(unsigned char* data, int len);
MyFunctionTypedef ProcessData;
来源:
MyFunctionTypedef ProcessData
{
...
}
在Borland CBuilder中运行正常。
但是我也在Arduino上尝试过,在源代码中出现错误error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
是否有一种方法可以在每个C或C ++编译器中使之正常工作?
永远无法使用typedef定义函数。 Borland C ++ Builder可能具有允许您执行此操作的编译器扩展,但是您无法执行任何符合标准的操作。
您不应该使用typedef声明函数。仅在声明函数指针时使用它们:
typedef void(MyFunctionTypedef)(unsigned char* data, int len);
void ProcessData (unsigned char* data, int len);
{
...
}
MyFunctionTypedef* ptr = ProcessData; // function pointer
ptr(); // call function
如果您正在寻找可用于功能定义的功能模板,那么实际上就没有这种事情。