2009-11-08 7 views

답변

6

이들은 매크로가 아니며, 컴파일러에 의해 적절한 데이터 저장 및 조작으로 변환됩니다. 예를 들어

당신은 당신의 프로그램이 있습니다

int i; 
i=5 
i+=7; 

컴파일러이 비슷한로 변환합니다

Allocate sizeof(int) bytes in the stack 
Put the number 5 in the allocated space 
Retrieve the number on the allocated space, add 7 to it, and save it again at the same location 
2

일부 표준 타입 (종종 size_t 또는 uintptr_t 또는 ptrdiff_t 같은 것들)는 typedef 또는 매크로로 구현됩니다. 그러나 컴파일러에 내장되어 있으며 헤더 파일에는 정의되어 있지 않은 "원시"또는 "기본"유형 (예 : char, int 등)이 필요합니다.

0

int, char, float 등과 같은 기본 데이터 유형은 본질적으로 C 표준에 정의되어 있습니다. uint32_t과 같은 다른 유형은 헤더 파일에 정의 된 typedef이며 기본 유형으로 정의됩니다.

1

매크로가 없습니다. 모든 프로그래밍 언어에는 매크로가 아닌 언어 구문 트리의 일부인 기본 유형이 필요합니다. 컴파일러는 이러한 기본 데이터 유형 인 directyl을 적절한 2 진 표현으로 변환합니다.

매크로가 어떻게 사용되는지 오해 한 것 같습니다. typedef를 통해 다른 유형으로 정의되는 유형이 있습니다.

typedef unsigned short BOOL; 

당신 당신이 tyepef를 선호해야하는 이유 매크로 그러나 이것은 당신에게 전체 컴파일러 검사를 제공하지 않습니다와 함께, 그건 그렇게.

관련 문제