c는 "int" "long" "char" "unsigned"... 모든 매크로와 같은 기본 데이터 유형입니까? 그렇다면 정의되는 위치는 무엇입니까? 그리고 그들은 "int"타입과 같이 어떻게 구현됩니까?은 c 매크로의 기본 데이터 유형입니까?
1
A
답변
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를 선호해야하는 이유 매크로 그러나 이것은 당신에게 전체 컴파일러 검사를 제공하지 않습니다와 함께, 그건 그렇게.
관련 문제
- 1. C++에서 포인터는 기본 유형입니까?
- 2. "long long"은 어떤 종류의 데이터 유형입니까?
- 3. 출력은 어떤 데이터 유형입니까?
- 4. 은 효율성을 유지하는 데 중요한 mysql 열 데이터 유형입니까?
- 5. objective-c 매크로의 오류
- 6. 데이터베이스의 SET과 동일한 데이터 유형입니까?
- 7. C++ 포인터가 한 가지 유형입니까?
- 8. 이것은 어떤 데이터 유형입니까, val one = (1,2,3)
- 9. 매크로의 매크로
- 10. 은 모든 테스트 유형을 포함하는 주요 테스트 유형입니까?
- 11. 매크로의 종류는 무엇입니까?
- 12. Microsoft Access 2010 데이터 매크로의 변수 데이터 사용
- 13. 스키마 매크로의 장점은 무엇입니까?
- 14. C 매크로의 출력 사용 및 반환
- 15. C 매크로의 값이 비어 있는지 테스트하십시오.
- 16. C++ 매크로의 내용을 보는 방법은 무엇입니까?
- 17. 왜 사용해야합니까 (...) while (FALSE); 매크로의 C++ 외부에
- 18. 은 가능한 기본 클래스
- 19. C 매크로의 경우 {...}을 수행해야하는 반면 (0,0)은 {...}을 수행하는 동안 (0)?
- 20. selectedIndexes가 배열 유형입니까?
- 21. PHP 문자열은 값 유형입니까?
- 22. RMI는 어떤 유형입니까?
- 23. 어떤 필드 유형입니까?
- 24. lambda는 고차 함수 유형입니까?
- 25. C#은 MySQL 데이터 및 시간 데이터 유형과 같습니다.
- 26. C \ C++ 전 처리기 오버로드 된 매크로의 다른 인수
- 27. Microsoft Office 매크로의 초보자
- 28. VBA/매크로의 오류 3709
- 29. __range_ok 매크로의 어셈블러 코드
- 30. Clojure 매크로의 동의어를 정의하십시오