찾다
일반적인 문제C 언어에서 typedef와 정의의 차이점은 무엇입니까?

typedef와 정의의 차이점은 다음과 같습니다. 정의는 전처리 편집기이고, 정의 가능한 매크로는 교체 가능성이 있는 반면, typedef는 편집기에 의해 처리되고 범위 규칙을 따르며 정의 유형 별칭으로 사용할 수 있습니다

#define typedef와 유사한 다양한 데이터 유형을 정의하기 위한 별칭이기도 한 C 지시어입니다. 하지만 여전히 차이점이 있습니다. 다음으로, 어느 정도 참고 효과가 있는 차이점을 자세히 소개하겠습니다. [추천 강좌:

C 언어 튜토리얼

] C 언어에서 typedef와 정의의 차이점은 무엇입니까?

1. 전처리기 VS 컴파일러#define은 정의 지점에서 #define 값을 복사하여 사용 지점에 붙여넣는 전처리기에 의해 처리됩니다. Typedef는 컴파일러에 의해 처리되며 새로운 유형의 실제 정의입니다. 컨트롤이 컴파일러에 도달할 때쯤이면 모든 #define이 교체될 것입니다.

차이의 영향

(1) typedef는 세미콜론으로 끝나야 하며 #define은 세미콜론으로 끝나서는 안 됩니다.

(2) #define에 대체 부작용이 있을 수 있습니다. 예:

   typedef char * string_t;         
   #define string_d char *        
   string_t s1,s2; // s1和s2都是char *类型        
   string_d s3,s4; // s3是char *但是s4的类型是char(而不是char *)

두 번째 진술의 문제는 전처리기가 이를

char * s3,s4;

로 대체하기 때문입니다. 이는 s3은 char* 유형이지만 s4는 char 유형임을 의미합니다. 모든 변수를 포인터 유형으로 만들려면 모든 변수를 지정해야 합니다. *

(3) typedef는 범위 규칙을 따릅니다. 즉, 새 유형이 범위(함수 내)에 정의된 경우 범위가 존재하는 경우에만 새 유형 이름이 표시됩니다. 그러나 전처리기가 #define을 만나면 모든 항목을 대체합니다(그 이후에는 범위 지정 규칙이 없습니다). 예:

 int main (){            
 { 
 //新范围开始              
 typedef int myInt_t;                 
 #define myInt_d int                
 myInt_t a;  // a的类型为int                
 myInt_d b;  // b的类型为int            
 } //新范围结束           
 myInt_t c; //错误,输入myInt_t未找到            
 myInt_d d; //d的类型为int        
 }

2. Macros VS type aliases

#define은 매크로를 정의하는 데에도 사용할 수 있지만 typedef는 기존 유형에 새 이름을 제공하는 데에만 사용할 수 있습니다(새 유형을 만들 수는 없습니다). 마찬가지로 #define을 사용하여 실제로 N을 정의하지는 않지만 코드 전체에서 N을 10으로 바꾸는 변수

#define N 10

를 정의할 수 있습니다. 따라서 명명된 상수에 사용할 수 있습니다. Typedef는 정의된 유형에만 새 이름을 제공할 수 있습니다

3. typedef를 유형 별칭으로 사용하세요

일부 유형 정의는 #define이 아닌 typedef를 통해서만 정의할 수 있습니다. 예:

(1) 크기 10의 정수 배열에 새 이름을 지정합니다.

       typedef int arr [ 10 ] ;
(2) 구조 유형

typedef struct {           
int a;            
char b;        
} myType;

에 새 이름을 지정합니다. 요약: 위 내용은 이 기사의 전체 내용입니다. 모두에게 도움이 될 것입니다.

위 내용은 C 언어에서 typedef와 정의의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구