如何在C / C ++源代码中使用typedef函数?

问题描述 投票:1回答:2

我正在构建一段旨在供许多项目使用的代码。在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 ++编译器中使之正常工作?

c++ c typedef
2个回答
2
投票

永远无法使用typedef定义函数。 Borland C ++ Builder可能具有允许您执行此操作的编译器扩展,但是您无法执行任何符合标准的操作。


0
投票

您不应该使用typedef声明函数。仅在声明函数指针时使用它们:

typedef void(MyFunctionTypedef)(unsigned char* data, int len);

void ProcessData (unsigned char* data, int len);
{
  ...
}

MyFunctionTypedef* ptr = ProcessData; // function pointer

ptr(); // call function 

如果您正在寻找可用于功能定义的功能模板,那么实际上就没有这种事情。

© www.soinside.com 2019 - 2024. All rights reserved.