'uint32_t'식별자를 찾을 수 없음 오류


94

Linux C에서 Windows 용 Visual C ++로 코드를 이식하고 있습니다.

Visual C ++는 알지 못 #include <stdint.h>하므로 주석 처리했습니다.

나중에 이러한 'uint32_t': identifier not found오류를 많이 발견했습니다 . 어떻게 해결할 수 있습니까?


다음 중 주석을다는 것은 무엇입니까?
Daniel A. White

3
그리고 어떤 버전의 Visual C ++를 사용하고 있습니까? uint32_t및 기타 정확한 폭 정수 유형, C99 및 C ++ 0X의 일부가 너무 오래된 컴파일러 (비주얼 C와 같은 ++ 2008 및 이전 버전)을 필요가 없습니다.
James McNellis 2011 년

꽤 많이 !!! #include <stdint.h> #include <syslog.h> #include <linux / stddef.h> #include <pthread.h> #include <unistd.h> 감사합니다 !!!
케빈

Visual C ++ express 2008을 사용하고 있습니다.
케빈

4
@kevin : 플랫폼 별 헤더를 제거하고 잊어 버릴 수는 없습니다. 새로운 플랫폼에 대한 대안을 찾아야합니다. 여기에는 종종 코드를 이식하기 위해 약간의 코드를 다시 작성해야합니다.
궤도에있는 가벼운 경주

답변:


115

이 유형은 <stdint.h>C ++ 11 표준의 일부이지만 C ++ 03의 표준이 아닌 C 헤더에 정의되어 있습니다. 헤더의 Wikipedia 페이지에 따르면 VS2010까지 Visual Studio와 함께 제공되지 않았습니다.

그 동안 Microsoft의 사용자 지정 정수 유형 을 C에서 예상하는 유형에 typedef매핑 하는 s를 추가하여 자신의 헤더 버전을 가짜로 만들 수 있습니다 . 예를 들면 다음과 같습니다.

typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
/* ... etc. ... */

도움이 되었기를 바랍니다!


4
Boost의 cstdint 구현을 사용할 수도 있습니다.
Peter Huene 2011 년

내 페이지에 코드를 복사하여 붙여 넣습니다. 그러나 "구문 오류 : 누락 ';'오류가 표시됩니다. 앞에 식별자 'int32_t' "및"누락 된 유형 지정자-int 가정 됨. 참고 : C ++는 default-int를 지원하지 않습니다 ".
케빈

죄송합니다. 저는 C를 처음 사용합니다. Boost의 cstdint 구현은 무엇입니까?
케빈

3
Microsoft의 고정 크기 정수 유형은 "t"로 끝나지 않습니다. 시도해보십시오 __int32.
Ben Voigt 2011 년

1
u_int32_tuint32_t동일한 유형 아니다; 하나는 u. 그것은 별도의 문제처럼 보입니다.
templatetypedef

79

당신은 할 수 있습니다 #include <cstdint>. 2011 년부터 C ++ 표준의 일부입니다.


1
이것은 C ++ 및 VS2010과 같은 질문의 제약 조건을 고려할 때 허용되는 대답 일 것입니다. 자신의 typedef를 굴릴 필요가 없습니다.
jww

7

나는 동일한 오류가 있으며 파일에 다음을 포함하여 수정했습니다.

#include <stdint.h>

파일 시작 부분에.


1
질문에서 지적했듯이 stdint.h 는 OP가 사용하는 C ++ 컴파일러의 일부가 아닙니다. 이 답변은 질문을 해결하지 않습니다.
IInspectable


3

msinttypes 프로젝트 페이지 에서 사용할 수있는 구현이 있습니다. "이 프로젝트는 Microsoft Visual Studio에서 stdint.h 및 inttypes.h의 부재를 채 웁니다."

이 구현에 대한 경험이 없지만 다른 사람들이 권장하는 것을 보았습니다.


이것은 더 좋고 가장 일반적으로 사용되는 구현입니다.
필립 Ombredanne


0

VS2010에서 프로젝트를 실행해야했고 코드를 수정할 수 없었습니다. 내 솔루션은 vS2013을 설치하고 VS2010 지점 VC ++ 디렉터리-> IncludeDirectories to Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ include를 설치하는 것이 었습니다. 그런 다음 내 프로젝트는 문제없이 컴파일되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.