美文网首页
C语言-预处理器

C语言-预处理器

作者: 富贵山庄王动 | 来源:发表于2017-03-14 21:02 被阅读0次

    宏替换

    可以预定义代码块什么的,还可以传递参数

    #include "csapp.h"
    #define NAME(A) "hello"#A
    #define FOR(i,start,end) for(int i=start;i<=end;i++)
    #define MAX(A,B) A+B+9
    #if 1
    #define P printf
    #endif
    #define swap(t,x,y) {int t;t=x;x=y;y=t;}
    int main()
    {
        int a=1;
        int b=2;
    
        swap(t,a,b);
        P("%d->%d\n",a,b);
        FOR(k,1,2) {
            puts(NAME(TOm));
            P("%d->%d\n",k,MAX(k,k));
        };
    }
    

    条件包含

    #if 对常量表达式进行求值

    #if expr
    #define P printf
    #endif
    

    只有expr是0时才不包含其中的定义。
    #ifndef用来测试某个名字是否已经定义,经常用于头文件,避免多次包含同一头文件

    #ifndef OS_CSAPP_H
    #define OS_CSAPP_H
    
    #include <stdio.h>
    #endif //OS_CSAPP_H
    

    程序块结构

        {
            int t;
            t = a;
            a = b;
            b = t;
        };
    

    其中t对外部不可见

    相关文章

      网友评论

          本文标题:C语言-预处理器

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