VC ++ 10 жалуется, что многие типы не определены, C99 - PullRequest
0 голосов
/ 29 октября 2010

Я пытаюсь скомпилировать загруженный проект с открытым исходным кодом, который, по-видимому, был написан на VC ++ 7.1.

После многих проблем, будучи новичком в C ++, мне удалось скачать и исправить включения для STLPort, которые использует проект. Тем не менее, я получаю примерно 15 000 ошибок с жалобами на то, что определенные типы не определены. Вот некоторые из них:

u_int32_t
int64_t
u_int16_t
u_int8_t

После небольшого поиска в Google я понял, что они добавлены в C99. Другие разработчики до меня сумели скомпилировать его с помощью VC. Я использую VC 10, хотя.

Проект был мертв в течение нескольких лет, поэтому я не могу связаться с автором.

Ответы [ 3 ]

4 голосов
/ 29 октября 2010

Компилятор Visual C ++ не поддерживает большинство функций C99.

Если вы хотите использовать стандартные целочисленные типы фиксированной ширины, вам необходимо убедиться, что вы включили <cstdint> и квалифицировали их как std:: или включили <stdint.h>.

Стандартными именами беззнаковых типов фиксированной ширины являются uint32_t, uint16_t и uint8_t (т. Е. Между u и int нет _). Конечно, вы можете, если хотите, набирать собственные типы (хотя вы должны использовать стандартные определения типов для нового кода, вам может потребоваться ввести собственные определения для взаимодействия с устаревшим кодом).

3 голосов
/ 29 октября 2010

Довольно легко определить эти типы для себя в Visual Studio, поскольку они предлагают __int (битовый размер).

typedef __int64 int64_t;
typedef unsigned __int32 u_int32_t;
typedef unsigned __int16 u_int16_t;
typedef unsigned __int8 u_int8_t;
0 голосов
/ 29 октября 2010

Вам необходимо установить совместимый компилятор C99 и библиотеки, и указать на них среду VC ++ 10.

Однако я подозреваю, что проще найти файлы build / make и использовать их.

...