본문 바로가기
CE

[C] LLP64 vs. LP64

by ds31x 2025. 3. 21.
LLP64와 LP64는
C/C++ 컴파일러가
데이터 타입의 크기를 정의하는
데이터 모델(data model) 임.

 

LLP64LP64는 는 해당 모델이 어떤 타입들을 64비트로 처리하는지를 나타내는 이름을 가짐.

  • longpointer가 다른 크기면, 포인터를 long에 저장할 때 잘림(truncation) 문제가 발생할 수 있음
  • 플랫폼 간 이식성(portability) 확보를 위해서는 정확한 타입 사용이 필수

LLP64, LP64 명칭의 의미

이름 약어 의미 설명 환경
LP64 Long and Pointer = 64-bit longpointer가 64비트 (8바이트)로 확장됨 gcc, clang
LLP64 Long Long and Pointer = 64-bit long longpointer는 64비트, long은 여전히 32비트 msvc

 


이름을 통한 해석 (initialism)

LP64

  • L = Long
  • P = Pointer
  • 두 타입을 64비트로 사용하겠다는 의미
  • 대부분의 Unix/Linux, macOS, GCC, Clang 환경이 이 모델 사용

LLP64

  • LL = Long Long
  • P = Pointer
  • long은 32비트 유지, 대신 long longpointer를 64비트로 확장
  • WindowsMSVC (Microsoft Visual C++)에서 사용

주요 타입 크기 비교

 

Data Type LLP64 (Windows/MSVC) LP64 (Linux,macOS/gcc,clang) 주요차이
short 2 bytes 2 bytes 동일
int 4 bytes 4 bytes 동일
long 4 bytes 8 bytes  차이 있음
long long 8 bytes 8 bytes 동일
void* 8 bytes 8 bytes 동일
float 4 bytes 4 bytes 동일
double 8 bytes 8 bytes 동일
long double 8 bytes 16 bytes (x86-64)  Windows는 double과 같고,
Linux는 확장
(단 ARM계열은 8bytes일 수 있음)
word 8 bytes (64-bit CPU) 8 bytes (64-bit CPU) 아키텍처에 따라 다름
  • "word"는 일반적으로 CPU 아키텍처의 기본 연산 단위를 의미하며, 데이터 모델(LP64, LLP64)과는 직접적으로 연결되지 않음.
  • C/C++ 에서 "word"라는 공식적인 타입이 없으며, CPU 및 OS마다 의미가 다를 수 있음.

추천:

  • 이식성 있는 코드를 원한다면 int32_t, int64_t명확한 고정폭 타입 사용

같이 보면 좋은 자료들

https://dsaint31.tistory.com/456

 

[Programming] Primitive Data Type : C, C++, NumPy, Torch

Primitive Data Type이(Unboxed type)란?C, C++, NumPy, PyTorch, TensorFlow 등에서 사용되는numeric data type들은보통 unboxed type 이라고도 불리는 primitive data type들이다.unboxed type에서는할당된 메모리 bit들이 해당 numeri

dsaint31.tistory.com

https://dsaint31.tistory.com/515

 

[Python] (Data) Type: Summary

1. Type 이란?Programming에서 사용되는 모든 value 혹은 object 들의 종류 를 (data) type이라고 부름.수학에서 숫자의 종류(type)를 실수, 정수, 자연수 등으로 나누는 것을 생각하면 쉽다.Programming에서는 문

dsaint31.tistory.com