Adi*_*rma 2 c++ pointers typedef
我正在尝试包含一个(.h)头文件,该文件由我的代码中的某些编译器自动生成.以下是自动生成的头文件的代码片段.
typedef struct SequenceOfUint8 {        // Line 69
    struct SequenceOfUint8 *next;
    Uint8           value;
    } *SequenceOfUint8;                 // Line 72
如果我在C代码(gcc编译器)中包含此头文件,它编译正常没有任何错误,但如果尝试将其包含在CPP代码中,g ++编译器会抛出下面提到的错误.
In file included from ssme/src/../include/xxxxx.h:39:0,
                 from ssme/src/ssme.cpp:11:
ssme/src/../include/yyyyy.h:72:4: error: conflicting declaration ‘typedef struct SequenceOfUint8* SequenceOfUint8’
 } *SequenceOfUint8;
    ^~~~~~~~~~~~~~~
ssme/src/../include/yyyyy.h:69:16: note: previous declaration as ‘struct SequenceOfUint8’
 typedef struct SequenceOfUint8 {
                ^~~~~~~~~~~~~~~
有人可以告诉如何在C++代码中使用它(如果可能的话,不更改自动生成的代码).
PS:我在CPP文件中使用extern "C" { #include "yyyy.h" }语句包含头文件,仍然没有运气.
您不能像在C++代码中那样使用它.这是另一个实例,其中C和C++是两种不同的语言.
C中的标记命名空间是独立的,在C++中则不是.它在C++中甚至不存在.
包装extern "C"也不会使C++编译器将标头视为C代码.这不是预期的功能.标头必须是独立的有效C++,它根本就不是.
您将需要编写一个C包装器,它公开了一个C++兼容的API.
| 归档时间: | 
 | 
| 查看次数: | 129 次 | 
| 最近记录: |