typedef union YYSTYPE {
int64_t iConst; // constant value
float fConst; // constant value
int iAttrLocator; // attribute locator (rowitem for int/float; offset+size for bits)
int iFunc; // function id
int iNode; // node index
} YYSTYPE;
它看起来对我有用,但cdt报告了int64_t iConst;
行的以下内容:
Multiple markers at this line:
- syntax error before "int64_t"
- no semicolon at the end of structure or union
有两个文件定义int64_t
,一个在项目内(sphinxstd.h
),另一个是与项目无关的包含路径D:/MinGW/include/stdint.h
,这是由这场冲突造成的吗?
更新
我选择上面的代码,然后选择 ctrl - x 和 ctrl - s 加上 ctrl - v 和 ctrl - s ,问题就消失了!
这里有没有cdt用户?
答案 0 :(得分:1)
你有#include <stdint.h>
吗?
答案 1 :(得分:1)
你应该说typedef union YYSTYPE_T
给联盟一个不同于typedef的名字。
答案 2 :(得分:0)
#include<stdint.h>
typedef union {
//
} YYSTYPE;
以上typedef
是您可能想要的。它将声明新类型YYSTYPE
答案 3 :(得分:0)
编译器不知道如何处理int64_t。由于它不是现有类型,因此它假定您正在尝试声明标识符。因为未定义的符号会破坏解析该行的编译器部分,所以它会抱怨丢失的分号。
确保int64_t
已定义。
即使您的IDE允许您右键单击并转到stdint.h,这并不意味着包含它。许多IDE都有预先编制索引的标准标头,以加快速度。
您可能只想将其声明为long long
并完成它。