0
struct reprVectorsTree;

#ifdef __cplusplus
extern "C" {
#endif

typedef reprVectorsTree * RHandle;
RHandle create_reprVectorsTree(float **, int , int );
void free_reprVectorsTree(RHandle);
float*  work_decode(RHandle , bool*, int);

#ifdef __cplusplus
}
#endif

我根据这里的答案写了接口头文件 How to use c++ objects in c? ,但我得到语法错误?缺什么?

----编辑----我把它改成了

struct reprVectorsTree;

#ifdef __cplusplus
extern "C" {
#endif

typedef struct reprVectorsTree * RHandle;
RHandle create_reprVectorsTree(float **, int , int );
void free_reprVectorsTree(RHandle);
float*  work_decode(RHandle , bool *, int);

#ifdef __cplusplus
}
#endif

现在我在 float* 行上收到以下错误

error C2143: syntax error : missing ')' before '*'
error C2081: 'bool' : name in formal parameter list illegal
error C2143: syntax error : missing '{' before '*'
error C2059: syntax error : ','
error C2059: syntax error : ')'
4

1 回答 1

8

尝试:

typedef struct reprVectorsTree * RHandle;

您不能只使用结构,就好像它是没有 typedef 的 C 中的类型(例如typedef struct reprVectorsTree;

编辑:假设您使用的是最近的 C 编译器,您还需要#include <stdbool.h>使用该类型,或者只使用 an来代替。boolint

于 2012-08-16T18:18:48.783 回答