К моему удивлению, я только что обнаружил, что C99 stdint.h отсутствует в MS Visual Studio 2003 вверх. Я уверен, что у них есть свои причины, но кто-нибудь знает, где я могу скачать копию? Без этого заголовка У меня нет никаких определений для полезных видов, таких как uint32_t и т.д.Заголовок C99 stdint.h и MS Visual Studio
ответ
Оказывается, вы можете скачать версию MS этого заголовка из:
https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h
Портативный один можно найти здесь:
http://www.azillionmonkeys.com/qed/pstdint.h
Благодаря этой Software Rambling блога.
Публичное доменное имя (а не лицензию MIT/BSD - вам даже не нужно сохранять авторское право) stdint.h для MSVC (слегка измененная версия от MinGW): http: // snipplr.com/view/18199/stdinth/ – 2009-10-23 07:32:45
Первая ссылка 404s – 2016-07-23 19:42:18
Изменен исходный ответ, но: https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h ссылка svn мертва – smaudet 2016-10-29 20:26:47
Visual Studio 2003 - 2008 (Visual C++ 7.1 - 9) не претендует на совместимость с C99. (Спасибо rdentato за его комментарий.)
Просто определите их сами.
#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
подталкивания содержит файл cstdint.hpp заголовка с типами вы ищете: http://www.boost.org/doc/libs/1_36_0/boost/cstdint.hpp
Microsoft не поддерживает C99 и не объявленные какие-либо планы. Я считаю, что они намерены отслеживать стандарты C++, но считают C настолько же устаревшим, как и подмножество C++.
Новые проекты в Visual Studio 2003 и более поздних версиях имеют параметр «Скомпилировать как код C++ (/ TP)», поэтому любые файлы .c будут скомпилированы как C++.
Другой портативное решение:
POSH: Портативный Open Source Harness
«POSH простой, портативный, легкий в использовании, простой в интеграции, гибкий, с открытым исходным кодом "Жгут" предназначенный для написания кросс-платформенных библиотек и приложений, значительно менее утомительных для создания и порта ».
http://poshlib.hookatooka.com/poshlib/trac.cgi
, как описано и используется в книге: Написать переносимый код: введение в разработку программного обеспечения для нескольких платформ Брайан Хук http://books.google.ca/books?id=4VOKcEAPPO0C
Джейсон
Update: Визуальный Studio 2010 и Visual C++ 2010 Express оба имеют stdint.h
. Он может быть найден в C:\Program Files\Microsoft Visual Studio 10.0\VC\include
В качестве обновления к этому вопросу: MSVC 2010 теперь включает в себя `stdint.h` – 2010-11-24 03:12:04
Также как. –
2012-09-12 16:46:45
Идущий в этом блоге: http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx, * VS 2015 Preview полностью поддерживает стандартную библиотеку C99 (с единственными упущениями, которые являются tgmath.h, что требует магии компилятора C и не имеет отношения к C++, который имеет перегрузку, и CX_LIMITED_RANGE/FP_CONTRACT, которые также требуют поддержки компилятора). * – 2014-12-14 03:48:15