Heim> häufiges Problem> Hauptteil

C语言中typedef和define有什么区别

清浅
Freigeben: 2019-04-04 09:54:08
Original
7848 Leute haben es durchsucht

typedef和define的区别有:define是预处理编辑器,可定义宏存在被替换的的可能性而typedef是由编辑器处理的,并且遵循范围规则,可用作定义类型别名

#define是一个C指令,它也是用于定义类似于typedef的各种数据类型的别名。但是它们之间仍存在差别,接下来在文章中具体为大家介绍它们之间的区别,具有一定的参考作用,希望对大家有所帮助

C语言中typedef和define有什么区别

【推荐课程:C语言教程

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 *)
Nach dem Login kopieren

第二个声明中的问题是因为预处理器会将其替换为

char * s3,s4;
Nach dem Login kopieren

这意味着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 }
Nach dem Login kopieren

2、宏VS类型别名

#define也可用于定义宏,但是typedef只能用于为现有类型提供新名称(它不能创建新类型)。类似地,#define可以用来定义变量

#define N 10
Nach dem Login kopieren

实际上是不会定义N,但是会在整个代码中将N替换为10。所以可以用于命名常量。而typedef只能为已定义的类型提供新名称

3、将typedef作为类型别名

某些类型定义只能使用typedef定义,而不能使用#define定义。例:

(1)给大小为10的整数数组赋一个新名称

typedef int arr [ 10 ] ;
Nach dem Login kopieren

(2)为结构类型赋予新名称

typedef struct { int a; char b; } myType;
Nach dem Login kopieren

总结:以上就是本篇文章的全部内容了,希望对大家有所帮助。

Das obige ist der detaillierte Inhalt vonC语言中typedef和define有什么区别. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!