Есть ли здесь какие-либо синтаксические ошибки во фрагменте кода? - PullRequest
0 голосов
/ 26 марта 2010
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, вызван ли он этим конфликтом

UPDATE

Я выбираю код выше, затем ctrl - x и ctrl - s plus ctrl - v и ctrl - s , проблема исчезла!

Есть ли здесь пользователи cdt?

Ответы [ 4 ]

1 голос
/ 26 марта 2010

Вы, вероятно, должны сказать typedef union YYSTYPE_T, чтобы дать объединению имя, отличное от typedef.

1 голос
/ 26 марта 2010

Ты #include <stdint.h>?

0 голосов
/ 26 марта 2010

Компилятор не знает, что делать с int64_t. Поскольку это не существующий тип, предполагается, что вы пытаетесь объявить идентификатор. Поскольку не определенный символ разрывает часть компилятора, которая анализирует эту строку, он жалуется на пропущенную точку с запятой.

Убедитесь, что int64_t определено.

Даже если ваша IDE позволяет вам щелкнуть правой кнопкой мыши и перейти к stdint.h, это НЕ означает, что она включена. Во многих IDE стандартные заголовки предварительно проиндексированы для ускорения работы.

Вы можете просто объявить его как long long и покончить с этим.

0 голосов
/ 26 марта 2010
#include<stdint.h>

typedef union {
   //
} YYSTYPE;

Выше typedef - это то, что вы, вероятно, хотите.Он объявит новый тип YYSTYPE

...