2014-10-20 87 views
2

这是一个头我在第三方库中的摘录:为返回结构指针的函数声明typedef?

struct aiFileIO; 
struct aiFile; 

// aiFile write callback 
typedef size_t (*aiFileWrite) (struct aiFile*, const char*); 

// aiFileIO open callback 
typedef aiFile* (*aiFileOpen) (struct aiFileIO*, const char*); 

为什么最后一行没有返回类型之前包含struct类型说明符? 换句话说这是为什么最后一行没有:

typedef struct aiFile* (*aiFileOpen) (struct aiFileIO*, const char*); 

这将使它明确该函数返回一个指向结构aiFile。

万一其重要的struct aiFile被定义在相同的头几行后。

+3

也许是因为创建头文件在C使用++项目,其中' struct'关键字不需要?或者也许有一个你没有看到的typedef? – 2014-10-20 12:13:23

+0

我99%的确信这个头文件是用C语言编写的。这个文件如果你不介意看一下:https://github.com/assimp/assimp/blob/d6551990433264e029b476455db90d1d889e461c/include/assimp/ cfileio.h – user10607 2014-10-20 12:25:53

+0

然后我建议你把它作为bug报告给作者。 – 2014-10-20 12:34:55

回答

3

我能想到的唯一解释是头文件是用于C++的,而不是need to typedef struct names

如果头被设计为从C中使用,那么这是一个错误,因为代码将无法建立为C.

+0

这个头文件应该提供一个C++库的c接口。这是一个错误吗? (这是文件:https://github.com/assimp/assimp/blob/d6551990433264e029b476455db90d1d889e461c/include/assimp/cfileio.h) – user10607 2014-10-20 12:24:12

+0

它确实没有建立! :)虽然编译好的lib,但我猜测它是因为它们并没有在内部使用这个文件。只作为一个接口。 – user10607 2014-10-20 12:27:44