这里的代码片段中是否存在语法错误?

时间:2010-03-26 00:55:30

标签: c debugging eclipse-cdt

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用户?

4 个答案:

答案 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并完成它。