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

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

В качестве обновления: MSVC 2010 теперь включает stdint.h

Michael Burr 24.11.2010 06:12

Читая этот блог: blogs.msdn.com/b/vcblog/archive/2014/11/17/…, VS 2015 Preview полностью поддерживает стандартную библиотеку C99 (за исключением tgmath.h, который требует магии компилятора C и не имеет отношения к C++ с перегрузкой, а также CX_LIMITED_RANGE / FP_CONTRACT, который также требует поддержки компилятора).

vulcan raven 14.12.2014 06:48
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
115
2
137 354
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

Оказывается, вы можете загрузить версию этого заголовка для MS по адресу:

https://github.com/mattn/gntp-send/blob/master/include/msinttypes/stdint.h

Портативный можно найти здесь:

http://www.azillionmonkeys.com/qed/pstdint.h

Спасибо блогу Программное обеспечение Ramblings.

Общественное достояние (не лицензия MIT / BSD - вам даже не нужно указывать авторские права) stdint.h для MSVC (слегка измененная версия MinGW): snipplr.com/view/18199/stdinth

Michael Burr 23.10.2009 11:32

Первая ссылка 404с

Matthew Moisen 23.07.2016 22:42

Изменен исходный ответ, но: github.com/mattn/gntp-send/blob/master/include/msinttypes/… ссылка svn мертва

smaudet 29.10.2016 23:26

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

Я что-то упускаю или не должно быть typedef unsigned __int64 uint64_t; ?

Roman A. Taycher 05.12.2010 11:55

И использовать буквальные значения uint64_t полезно для #define U64(u) (u##ui64) в Windows и для #define U64(u) (u##ULL) в противном случае.

Niklas 14.08.2013 15:12

Boost содержит заголовочный файл cstdint.hpp с типами, которые вы ищете: http://www.boost.org/doc/libs/1_36_0/boost/cstdint.hpp

boost - это C++, вопрос по C99

Remo.D 24.09.2008 18:11

Непонятно - он спрашивает о заголовке C99 в Visual Studio, не указывая, какой язык он использует. В любом случае это не может быть C99, потому что Microsoft его не поддерживает.

Nemanja Trifunovic 24.09.2008 18:36

OP хочет копию <stdint.h>, а не заголовок Boost.

jww 01.10.2016 11:16

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

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

Еще одно портативное решение:

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

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

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

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

-Джейсон

Из статьи Poshlib Wikipedia авторизация по ссылке: имя пользователя: гость, пароль: гость123

JPaget 14.09.2012 03:19

Всего 3 коммита, последний из которых датирован сентябрем 2006 г.

AntoineL 21.02.2015 14:58

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

А также <cstdint> для пользователей C++, которым нравится std::.

Adrian McCarthy 12.09.2012 20:45

Другие вопросы по теме