C99 stdint.h 헤더 및 MS Visual Studio


113

놀랍게도 MS Visual Studio 2003 이상에서 C99 stdint.h가 누락되었음을 방금 발견했습니다. 이유가 있다고 확신하지만 어디서 사본을 다운로드 할 수 있는지 아는 사람이 있습니까? 이 헤더가 없으면 uint32_t 등과 같은 유용한 유형에 대한 정의가 없습니다.


41
이에 대한 업데이트 : MSVC 2010에는 이제 다음이 포함됩니다.stdint.h
Michael Burr

이 블로그로 이동 : blogs.msdn.com/b/vcblog/archive/2014/11/17/… , VS 2015 Preview는 C99 표준 라이브러리를 완벽하게 지원합니다 (유일한 생략은 C 컴파일러 마법이 필요한 tgmath.h입니다. 오버로딩이있는 C ++ 및 컴파일러 지원이 필요한 CX_LIMITED_RANGE / FP_CONTRACT와는 관련이 없습니다.
발칸 까마귀

답변:


82

다음에서이 헤더의 MS 버전을 다운로드 할 수 있습니다.

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

휴대용 제품은 여기에서 찾을 수 있습니다.

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

Software Rambling 의 블로그에 감사드립니다 .


13
MSVC (MinGW에서 약간 수정 된 버전) 용 stdint.h : snipplr.com/view/18199/stdinth
Michael Burr

첫 번째 링크 404
마태 복음 Moisen

원래 답변을 수정했지만 : github.com/mattn/gntp-send/blob/master/include/msinttypes/… svn 링크가 죽었습니다
smaudet

46

직접 정의하십시오.

#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

4
내가 뭔가를 놓쳤거나 typedef unsigned __int64 uint64_t; ?
Roman A. Taycher 2010

1
그리고 리터럴 uint64_t 값을 사용하려면 #define U64(u) (u##ui64)Windows와 #define U64(u) (u##ULL)다른 경우 에 유용합니다 .
Niklas

45

업데이트 : Visual Studio 2010Visual C ++ 2010 Express 모두 stdint.h. 그것은에서 찾을 수 있습니다C:\Program Files\Microsoft Visual Studio 10.0\VC\include


3
.NET에서 좋아하는 C ++ 사용자를위한 <cstdint>뿐만 아니라 std::.
Adrian McCarthy

23

Visual Studio 2003-2008 (Visual C ++ 7.1-9)은 C99와 호환된다고 주장하지 않습니다. (그의 의견에 대해 rdentato에게 감사드립니다.)


11

Boost에는 찾고있는 유형의 cstdint.hpp 헤더 파일이 포함되어 있습니다. http://www.boost.org/doc/libs/1_36_0/boost/cstdint.hpp


1
부스트는 C ++, 문제는 C99에
Remo.D

4
명확하지 않습니다. 사용중인 언어를 지정하지 않고 Visual Studio의 C99 헤더에 대해 묻습니다. 어쨌든 Microsoft가 지원하지 않기 때문에 C99가 될 수 없습니다.
Nemanja Trifunovic

OP는 <stdint.h>Boost 헤더가 아닌 의 복사본을 원합니다 .
jww

5

Microsoft는 C99를 지원하지 않으며 이에 대한 계획을 발표하지 않았습니다. 나는 그들이 C ++ 표준을 추적하려고하지만 C ++의 하위 집합을 제외하고는 C를 효과적으로 쓸모가 없다고 생각합니다.

Visual Studio 2003 이상의 새 프로젝트에는 기본적으로 "C ++ 코드 (/ TP)로 컴파일"옵션이 설정되어 있으므로 모든 .c 파일이 C ++로 컴파일됩니다.


4

또 다른 휴대용 솔루션 :

POSH : 휴대용 오픈 소스 하네스

"POSH는 간단하고 휴대 가능하며 사용하기 쉬우 며 통합하기 쉽고 유연한 오픈 소스"하네스 "로 크로스 플랫폼 라이브러리 및 애플리케이션을 작성하고 이식하는 데 지루하지 않게 설계되었습니다."

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

책에서 설명하고 사용 : 이식 가능한 코드 작성 : 다중 플랫폼 용 소프트웨어 개발 소개 By Brian Hook http://books.google.ca/books?id=4VOKcEAPPO0C

-제이슨


1
Poshlib Wikipedia 기사에서 링크 인증은 다음과 같습니다 .username : guest, password : guest123
JPaget

총 3 건의 커밋, 2006 년 9 월의 마지막 커밋
AntoineL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.