Заголовок C99 stdint.h и MS Visual Studio

К моему удивлению, я только что обнаружил, что C99 stdint.h отсутствует в MS Visual Studio 2003 вверх. Я уверен, что у них есть свои причины, но кто-нибудь знает, где я могу скачать копию? Без этого заголовка у меня нет определений для полезных типов, таких как uint32_t и т.д.

Ответ 2

Просто определите их самостоятельно.

#ifdef _MSC_VER

typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;

#else
#include <stdint.h>
#endif

Ответ 3

Обновление: Visual Studio 2010 и Visual С++ 2010 Express оба имеют stdint.h. Его можно найти в C:\Program Files\Microsoft Visual Studio 10.0\VC\include

Ответ 4

Visual Studio 2003 - 2008 (Visual С++ 7.1 - 9) не претендуют на совместимость с C99. (Спасибо rdentato за его комментарий.)

Ответ 6

Microsoft не поддерживает C99 и не объявила о каких-либо планах. Я считаю, что они намерены отслеживать стандарты на С++, но считают C столь же устаревшим, кроме как подмножество С++.

Новые проекты в Visual Studio 2003 и более поздних версиях имеют параметр "Компилировать как С++ код (/TP)", поэтому любые файлы .c будут скомпилированы как С++.

Ответ 7

Другое портативное решение:

POSH: Портативный источник с открытым исходным кодом

"POSH - это простая, портативная, простая в использовании, легко интегрируемая, гибкая система с открытым исходным кодом, предназначенная для написания кросс-платформенных библиотек и приложений, значительно менее утомительных для создания и порта".

http://poshlib.hookatooka.com/poshlib/trac.cgi

как описано и используется в книге: Написать переносимый код: введение в разработку программного обеспечения для нескольких платформ Брайан Хук http://books.google.ca/books?id=4VOKcEAPPO0C

-Jason