C语言-预处理器

宏替换

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

#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对外部不可见

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容