C编程语言提供了一个typedef关键字,你可以用他为类型提供一个别名。下面示例为unsigned char类型创建别名BYTE
typedef unsigned char BYTE;
如上定义之后,就可以像使用unsigned char一样来使用BYTE了,如下...
BYTE b1, b2;
习惯上,使用大写字母来提醒用户这是个类型别名,当然你也可以如下这样使用小写字母:
typedef unsigned char byte;
你还可以使用typedef为自定义类型创建别名。比如,在创建结构类型时,直接指定一个别名,如下这样:
#include <stdio.h> #include <string.h> typedef struct Books { char title[50]; char author[50]; char subject[100]; int book_id; } Book; int main( ) { Book book; strcpy( book.title, "C Programming"); strcpy( book.author, "Nuha Ali"); strcpy( book.subject, "C Programming Tutorial"); book.book_id = 6495407; printf( "Book title : %s\n", book.title); printf( "Book author : %s\n", book.author); printf( "Book subject : %s\n", book.subject); printf( "Book book_id : %d\n", book.book_id); return 0; }
对上面代码编译并执行,会得到如下结果:
Book title : C Programming Book author : Nuha Ali Book subject : C Programming Tutorial Book book_id : 6495407
typedef 对比 #define
#define是一个C预编译指令,和typedef一样也可以为很多类型指定别名,但有如下区别:
-
typedef仅限于为类型创建别名,但#define还可以为值创建别名,比如你可以为1创建别名one。
-
typedef interpretation is performed by the compiler whereas #define statements are processed by the pre-processor.
-
typedef由编译器解释,但#define语句在编译之前,要先由预处理器来处理。
下面演示了如何使用 #define
#include <stdio.h> #define TRUE 1 #define FALSE 0 int main( ) { printf( "Value of TRUE : %d\n", TRUE); printf( "Value of FALSE : %d\n", FALSE); return 0; }
对上面代码编译并执行会得到如下结果:
Value of TRUE : 1 Value of FALSE : 0