2014-05-14 2 views
1

unsigned __int64 대신 intuint64 대신 int32을 쓰고 싶습니다. PrimitiveTypes.h이라는 파일을 만들어 typedef을 사용하여이 작업을 수행 할 수 있습니다.원시 데이터 유형의 이름을 전역 적으로 바꿉니 까?

typedef signed char int8; 
typedef signed short int16; 
typedef signed int int32; 
typedef unsigned char uint8; 
typedef unsigned short uint16; 
typedef unsigned int uint32; 
typedef unsigned int uint; 
typedef __int64 int64; 
typedef unsigned __int64 uint64; 

지금은 모든 단일 파일에 가까운 것으로 판명 프리미티브를 사용할 필요가 모든 파일에 PrimitiveTypes.h을 포함 할 수 있습니다.

아마 이것은 나쁜 습관이지만, 모든 단일 파일에 새 기본 요소를 수동으로 포함 할 필요가 없거나 문제에 대한 다른 해결책을 수동으로 포함 할 필요가 없도록 재 정의를 전역 적으로 추가하는 방법이 있습니까? 특정 솔루션이있는 경우 Visual Studio를 사용하고 있습니다.

+1

Visual Studio는 내가 잘못 입력하지 않은 경우 일반 포함에'stdafx.h '를 사용하므로 거기에 헤더를 포함 할 수도 있습니다. – SingerOfTheFall

+0

Concur, 특히'primitivetypes.h'가 타입을 정의한 후에는 많이 변경되지 않을 가능성이 있기 때문에 Concur. –

+0

그것은 좀 더 편리하게 만들 것이다. 그러나 나는 헤더 파일에 커다란'stdafx.h '를 포함시키는 것이 좋은 생각이라고 생각하지 않기 때문에 모든 헤더 파일에'primitivetypes.h'를 포함시킬 필요가있다. 컴파일 시간을 줄이려면. – Adelost

답변

1

Force 코드가 첫 번째 코드 줄 앞에 머리글을 포함하는 /FI 스위치가 있습니다.

하지만 보통은 미리 컴파일 된 헤더에 넣기 만하면됩니다. 코멘트에서 큰 미리 컴파일 된 헤더는 나쁜 생각이라고 언급합니다. 그것은 사실 다른 방향입니다. 미리 컴파일되지 않은 많은 헤더 집합은 나쁜 생각입니다. 대부분의 파일에는 전체 세트가 필요하지 않지만 가능한 한 많은 프리 컴파일이 필요합니다.

+0

'포스 포함', 제 목적에 큰 도움이되었습니다, 감사합니다! :) 나는 비슷한 해결책이있을 거라고 생각했지만, "자동 포함"과 "암시 적 포함"에 대해 검색했을 때 아무것도 찾을 수 없었습니다. 나는 컴파일러 마술이 장면 뒤에서 (예 : 숨겨진 포함) 많이 발생하는 경우 코드를 읽는 것이 혼란 스러울 수 있음을 이해하지만, 자신의 데이터 형식과 같은 명백한 변경 사항을 고수하는 한 괜찮을 것이라고 생각합니다. – Adelost

+0

명확하게 설명하기 위해 큰 미리 컴파일 된 헤더가 좋지 않다고 생각합니다. 비록 내가 이해할지라도 그들은 단지 .cpp에 포함되어 있다고 가정된다. '.h' 파일에서 include를 피하고 대신 forward 선언문을 선호해야합니다. 모든'에 미리 컴파일 된 큰 헤더를 포함합니다.h '는 실수로 보입니다. 훨씬 더 작은'PrimitiveTypes.h'만이 더 좋은 아이디어처럼 보였습니다. (나는 당신의 제안 덕분에 수동으로 할 필요가 없습니다.) – Adelost

2

표준 C++에는 <cstdint> 헤더가 있습니다.
는 그냥 보통

#include <stdint.h> 

에 의존 할 수 그리고 네 당신이 이러한 유형을 사용하는 모든 파일에 그것을 포함해야합니다 나이 기준에 대한 정보

#include <cstdint> 

을 말한다. 당신은 프로젝트 중앙 헤더 파일을 가지고 있을지도 모릅니다. 그것은 어쨌든 도처에 포함되어 있습니다.

+1

아, 표준에 있음을 아는 것이 좋습니다. 필자는 매번 여분의'_t '를 타이핑하는 것을 게으 르기는하지만, 그렇게하는 것이 일반적입니다. – Adelost

+0

@Adelost 이식성있는 코드를 작성하려면 추가 노력을 기울여 추가 _t를 작성하는 것이 좋습니다. 당신의 IDE가 당신을 위해 이것을하지 않습니까? –

관련 문제