'uint32_t'는 유형의 이름을 지정하지 않습니다.
2007 년에 안전하게 C ++ 소프트웨어 패키지를 구축하려고합니다.
error: ‘uint32_t’ does not name a type
이것은 g ++ 4.5.2를 사용하는 64 비트 Ubuntu에서 발생합니다. g ++ 4.1.2를 사용하여 64 비트 CentOS에서 잘 선택합니다.
거기에 #include
내가 부족 또는 컴파일러 플래그는? 또는 typedef
내가 할당 uint32_t
A를 size_t
또는 어쩌면 unsigned int
?
stdint.h를 포함해야합니다.
#include <stdint.h>
필요는 #include <cstdint>
하지만 항상 작동하는 [해석] 아닙니다.
문제는 일부 컴파일러가 표준이 설치되기 전에 다양한 헤더 유형에 정의되어있는 이름을 자동으로입니다.
자, "항상 작동하지 않을 수도 있습니다." 이것은 cstdint 헤더가 C ++ 11 표준의 일부이고 현재 C ++ 컴파일러에서 항상 사용할 수있는 것은 아니기 때문입니다 (하지만 종종 그렇습니다). stdint.h 헤더는 C와 동일하며 C99의 일부입니다.
최상의 이식을 위해 Boost boost/cstdint.hpp
를 사용하는 것이 좋습니다. 아마도 # include'ing을 사용할 수있을 것입니다 <cstdint>
.
나는 또한 맥 OSX 10.6.8 동일한 문제가에서 발생했으며 불행히도 해당 파일을 추가 #include <stdint.h>
하거나 추가해도 <cstdint.h>
문제가 해결되지 않았습니다. 더 많은 검색 그러나 후이 솔루션을 추가 #include <sys/types.h>
하는 것이 좋습니다 .
다른 답변은 컴파일러가 C ++ 11을 준수 가정합니다. 괜찮습니다. 하지만 오래된 컴파일러를 사용한다면 어떨까요?
나는 인터넷 어딘가에서 다음 해킹을 집어 들었다. 그것은 나를 위해 충분히 잘 작동합니다.
#if defined __UINT32_MAX__ or UINT32_MAX
#include <inttypes.h>
#else
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
typedef unsigned long long uint64_t;
#endif
물론 아닙니다. 그러나 컴파일러에서는 작동 할 수 있습니다.
base.mk 파일에 다음을 추가하십시오. 다음 세 번째 줄이 중요합니다-include $(TOP)/defs.mk
CFLAGS=$(DEBUG) -Wall -W -Wwrite-strings
CFLAGS_C=-Wmissing-prototypes
CFLAGS_CXX=-std=c++0x
LDFLAGS=
LIBS=
#error를 방지하려면 파일이 곧 출시 될 예정입니다. ISO C ++ 표준 인 C ++ 0x에 대한 컴파일러 및 라이브러리 지원이됩니다. 이 지원은 현재 실험적이며 -std = c ++ 0x 또는 -std = gnu ++ 0x 컴파일러 옵션을 사용하여 활성화해야합니다.
opencv 헤더를 포함 할 때 경우.
순서를 변경하는 것이 좋습니다.
표준 C ++ 헤더 바로 아래에 opencv 헤더를 추천하십시오.
이렇게 :
#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
인터넷에서 다운로드 한 lib를 사용하는 데 동일한 문제가 발생했습니다. 제 경우에는 이미 #include <cstdint>
코드에 있습니다. 다음을 추가하여 해결했습니다.
using std::uint32_t;
/ usr / include / x86_64-linux-gnu / bits 이동하여 stdint-uintn.h를 다음 행을 추가하십시오.
typedef __uint8_t uint8_t;
typedef __uint16_t uint16_t;
typedef __uint32_t uint32_t;
typedef __uint64_t uint64_t;
다시 stdint-intn.h를
typedef __int8_t int8_t;
typedef __int16_t int16_t;
typedef __int32_t int32_t;
typedef __int64_t int64_t;
이 줄은 이미 존재합니다. 그냥 복사하여 누락 된 줄을 추가하면됩니다.
참고 URL : https://stackoverflow.com/questions/11069108/uint32-t-does-not-name-a-type
'ProgramingTip' 카테고리의 다른 글
shapefile (.shp)을 xml / json으로 변환 (0) | 2020.11.16 |
---|---|
Windows 용 Markdown 미리보기 애플리케이션 (0) | 2020.11.16 |
node.js가 한 번에 6 개의 요청 만 처리하는 이유는 무엇입니까? (0) | 2020.11.16 |
m2e-wtp 오류 : (0) | 2020.11.16 |
Rails 4 : 매개 변수에 속성 삽입 (0) | 2020.11.16 |