Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C/C++源代码中使用函数typedef?_C++_C_Typedef - Fatal编程技术网

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

如何在C/C++源代码中使用函数typedef?,c++,c,typedef,C++,C,Typedef,我正在构建一段代码,供许多项目使用。在C和C++中都有。ifdef_uucplusplus的东西已经处理好了 该项目使用回调和指向函数的指针。太容易了,我想用typedefs函数。比如说 标题: typedef void(MyFunctionTypedef)(unsigned char* data, int len); MyFunctionTypedef ProcessData; 资料来源: MyFunctionTypedef ProcessData { ... } 这在Borland

我正在构建一段代码,供许多项目使用。在C和C++中都有。ifdef_uucplusplus的东西已经处理好了

该项目使用回调和指向函数的指针。太容易了,我想用typedefs函数。比如说

标题:

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

MyFunctionTypedef ProcessData;
资料来源:

MyFunctionTypedef ProcessData
{
  ...
}
这在Borland CBuilder中运行良好

但我也在Arduino中尝试过,在源代码中出现了一个错误 错误:应为“=”、“、”、“;”、”“{”标记前的asm”或“{”属性


是否有一种方法在每个C++或C++编译器中实现?

< p>你不能用Type的函数定义一个函数,Borland C++Builder可能有一个编译器扩展,允许你这样做,但是没有任何标准兼容的你可以做的。

< p>你不能用TyPulf定义一个函数。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 

如果您正在寻找用于函数定义的函数模板,则实际上并没有这种情况。

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

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

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

MyFunctionTypedef* ptr = ProcessData; // function pointer

ptr(); // call function 

如果你正在寻找一个函数模板来重用函数定义,那么就不存在这样的事情了。

无意义。函数Type Debug在C和C++中都是可能的。你不能声明TyPulf的实例,但这是另一个故事。@ Lundin,你说的对,但这不是我写的。一个TyPufFF很好,但不定义它,这就是OP试图做的事情。值得一提的是,OP可能需要的是一个前向声明而不是一个TyPufFube。@ MGZZ不,这个部分很好:PosiDebug是用Type Debug C++来正确声明的。函数Type Debug在C和C++中都是可能的。不能声明typedef的实例,但那是另一回事。@Lundin你是对的,但这不是我写的。一个人可以用typedef声明一个函数,但不能定义它,这就是OP试图做的。值得一提的是,OP可能想要的是一个正向声明,而不是typedef本身。@Mgetz不,that部分很好:ProcessData是使用typedef正确声明的。你不应该这样做,即使你的comiler允许这样做,他也不应该这样做,因为它是非标准的。如果你这样声明ProcessData,你对函数参数一无所知,你需要在typedef中查找它们。Borland C builder似乎不是一个C编译器C标准明确规定禁止在函数定义中使用typedef,句号。你不应该这样做,即使你的comiler允许这样做,他也不应该这样做,因为这是非标准的。如果你像这样声明ProcessData,你对函数参数一无所知,你需要在typedef中查找它们。Borland C builder似乎不这样做然后是C编译器。C标准明确规定,禁止在函数定义中使用typedef,句号。