프로그래밍 언어/C & C++ 정리

마이크로 소프트에서 사용되는 _CLRCALL_OR_CDECL

뽀또치즈맛 2025. 5. 7. 14:05

 
 
_CLRCALL_OR_CDECL 는 으래 C++에서 쓰이는 
endl을 타고 들어가면 볼 수 있는 매크로이다.
 
 
enld을 타고 들어가면 다음과 같은 코드를 볼 수 있는데,
 

 
해당 코드에서 사용되는 basic_ostream의 클래스 크기는 1바이트이다.
아마 c의 _Alignof나 C++의 alignof(T) 또는 alignas를 사용한 것 같다.

 
 
alignas의 예시
 
 
alignas를 사용하지 않고 클래스 패딩 규칙에 따른 메모리 할당 크기

 
alignas를 사용하여 메모리 할당 크기를 사용자가 임의로 지정해 준 코드
 

 
 
해당 코드 전문

class a
{
    int v[4];
};

// V의 메모리 풀 즉, 패딩을 내가 조절하는 것
// alignas를 사용하면
// V의 할당 될 메모리를 비트 단위로 내가 할당해줄 수 있는 것
class alignas(16) V { float v[4]; };

// V의 최대 메모리 풀 사이즈가 16인지?
static_assert(alignof(V) == 16, "V should be 16-byte aligned");

 
 
그냥 C++로 코딩 테스트 풀다가 재밌어서 해봤는데
적어두면 더 재밌을 거 같아서 메모삼아 적어두었다.