2014-05-24 4 views
1

에 대한 선언을 충돌 :오류 : 내 프로그램을 컴파일 할 때 처음에는이 오류가있어 uint32_t

/include/stdint.h:52: error: conflicting declaration ‘typedef unsigned int uint32_t’

/cuda/include/vector_types.h:452: error: ‘uint32_t’ has a previous declaration as ‘typedef struct uint32_t uint32_t’

: 다음

error: ‘uint32_t’ does not name a type

을 내가

#include <stdint.h> 

을 포함 지금은이 오류를 밝혀

이 문제를 해결하기위한 제안이 있으십니까? 감사합니다

+3

이것은 내가 말할 수있는 한 내 쿠다 빌드에서 발생하지 않습니다. 나는'stdint.h'를 포함시킬 수 있으며, 문제없이 직접'uint32_t'를 사용할 수도 있습니다. 그래서 당신이 당신의 환경에 대해 우리에게 말하지 않는 것이 있다고 생각합니다. 아마도 문제를 보여주는 간단한 프로그램을 제공 한 다음 컴퓨터 구성 (OS, CUDA 버전 등)과 함께 컴파일 할 때 사용하는 정확한 명령 줄을 제공하십시오. –

+0

@clouddy, 대답 중 하나를 표시하십시오. 맞습니다. 처음 두 답변 중 하나를 권하고 싶습니다. – Andrew

답변

3

#include <cstdint>std::uint32_t을 시도하려고하지 않을 수 있습니다.

1

Mybe이게 도움이 될 수 있습니까?

어쩌면 사용법 #include cstdint하지만 항상 일을하거나

#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 
+0

나는 이것을 전에 시도했지만 이것 역시 잘되지 않았다. – clouddy

+0

이런 종류의 일은 표준을 따르지 않는 컴파일러를 사용하는 경우에만 필요합니다 (물론 nvcc에 해당 될 수 있습니다!). –

0

uint32_t가 vector_types.h에 정의 된 방법을 확인할 수 있습니다. #ifndef 항목이 이미 존재하며 포함 항목의 순서를 변경하면 빠져 나갈 수 있습니다. Google을 통해 this 버전을 찾았지만 uint32_t 선언이 전혀 없습니다.