美文网首页
C-typedef和#define

C-typedef和#define

作者: 小石头呢 | 来源:发表于2019-08-05 14:32 被阅读0次

    一.typedef关键字

    • typedef 仅限于为类型定义符号名称

    • 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 教程");
       strcpy( book.author, "Runoob"); 
       strcpy( book.subject, "编程语言");
       book.book_id = 12345;
     
       printf( "书标题 : %s\n", book.title);
       printf( "书作者 : %s\n", book.author);
       printf( "书类目 : %s\n", book.subject);
       printf( "书 ID : %d\n", book.book_id);
     
       return 0;
    }
    
    //运行结果
    书标题 : C 教程
    书作者 : Runoob
    书类目 : 编程语言
    书 ID : 12345
    

    二.#define指令

    • #define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE

    • #define是由预编译器处理的

    #include <stdio.h>
     
    #define TRUE  1
    #define FALSE 0
     
    int main( ){
       printf( "TRUE 的值: %d\n", TRUE);
       printf( "FALSE 的值: %d\n", FALSE);
     
       return 0;
    }
    
    //运行结果
    TRUE 的值: 1
    FALSE 的值: 0
    

    三.typedef 与 #define 的区别

    • #define可以使用其他类型说明符对宏类型名进行扩展,但对 typedef 所定义的类型名却不能这样做。
    #define INTERGE int;
    unsigned INTERGE n;  //没问题
    typedef int INTERGE;
    unsigned INTERGE n;  //错误,不能在 INTERGE 前面添加 unsigned
    
    • 在连续定义几个变量的时候,typedef 能够保证定义的所有变量均为同一类型,而 #define 则无法保证。
    #define PTR_INT int *
    PTR_INT p1, p2;        //p1、p2 类型不相同,宏展开后变为int *p1, p2;
    typedef int * PTR_INT
    PTR_INT p1, p2;        //p1、p2 类型相同,它们都是指向 int 类型的指针。
    

    相关文章

      网友评论

          本文标题:C-typedef和#define

          本文链接:https://www.haomeiwen.com/subject/eosydctx.html