아키텍처 이식성 (Architecture Portability)¶
아키텍처 이식 가능한 코드를 작성합니다. 단일 프로세서에 특정한 CPU 기능에 의존하지 마세요.
- 값을 인쇄할 때 printf 함수 계열 대신 absl::StrCat , absl::Substitute , absl::StrFormat 또는 std::ostream 과 같은 유형이 안전한 숫자 형식 지정 라이브러리를 사용하십시오.
- 구조화된 데이터를 프로세스 내부 또는 외부로 이동할 때 메모리 내 표현을 복사하는 대신 프로토콜 버퍼와 같은 직렬화 라이브러리를 사용하여 인코딩하십시오.
- 메모리 주소를 정수로 작업해야 하는 경우 uint32_t s 또는 uint64_t s가 아닌 uintptr_t s에 저장하세요.
- 64비트 상수를 생성하려면 필요에 따라 중괄호 초기화를 사용하세요. 예: int64_t my_value{0x123456789}; uint64_t my_mask{uint64_t{3} << 48};
- 이식 가능한 부동소수점 타입을 사용하세요.
long double을 피하세요. - 이식 가능한 정수 타입을 사용하세요.
short,long,long long을 피하세요.
이해하기 쉽게 설명하기¶
핵심: 특정 CPU에 의존하지 않는 코드¶
단일 프로세서에만 있는 CPU 기능에 의존하지 말고, 아키텍처 이식 가능한 코드를 쓰세요. 실무 지침:
- 숫자 출력:
printf계열 대신 타입 안전한absl::StrCat,absl::StrFormat,std::ostream등을 사용. - 데이터 이동: 메모리 표현을 그대로 복사하지 말고 프로토콜 버퍼 같은 직렬화 라이브러리로 인코딩.
- 주소를 정수로:
uint32_t/uint64_t가 아니라uintptr_t에 저장. - 64비트 상수: 중괄호 초기화 사용. 예:
int64_t my_value{0x123456789};,uint64_t my_mask{uint64_t{3} << 48}; - 이식 가능한 타입:
long double을 피하고,short/long/long long대신 정확한 너비 타입을 사용.