<<C语言深度剖析>>学习笔记之四:预运算符

本文详细介绍了C语言中的预处理指令,包括#define、#undef、#if等,并讲解了预处理指令在程序中的作用,如宏定义、条件编译、文件包含等,帮助读者深入理解C语言的预处理阶段。
摘要由CSDN通过智能技术生成

预处理:

    1.C语言中的预编译指令罗列如下:

    #define

    #undef

    #include

    #if

    #else

    #elif

    #endif

    #ifdef

    #ifndef

    #line    改变当前行数和文件名称.命令的基本形式如:#line number["filename"]

    #error 编译程序时,只要遇到#error就会生成一个编译错误提示消息,并停止编译

    #pragma 为实现时定义的命令,它允许向编译程序传送各种指令.例如,编译程序可能有一种选择,它支持对程序执行的跟踪.

        可用#pragma语句指定一个跟踪选择.


    2.ANSI标准C定义的几个宏:

    __LINE__  表示正在编译的文件的行号;

    __FILE__   表示正在编译的文件的名字;

    __DATE__ 表示编译时刻的日期字符串,如:"25 Dec 2007"

    __TIME__   表示编译时刻的时间字符串,如:"12:30:55"

    __STDC__ 判断该文件是不是定义成标准C程序


    3.#define

    3.1数值宏常量

    利用宏常量可以实现程序的重用性、可读性.

    重用性,如:

    #define PI (3.141592653)

    在以后代码中尽可能使用PI来替代3.141592653.这样一旦修改PI的精度只需要改一下PI的宏定义值就可以了.

    可读性,如:

    #define ERROR_POWEROFF (-1)

    如果进行重定义在某种情况下出错返回-1别人根本不知道是什么意思,因为很多出错情况下都会返回-1.


    3.2定义表达式

        定义表达式时一定不要吝啬"()".否则很有可能出错了.

        例如:

        #define SQR(x)    x * x

        如果x的值是10,SQR(x)被替换为10 * 10是没有问题的.如果x是一个表达式,比如是10 + 1.那么SQR(x)被展开后

是10+1*10+1,这不是我们预期的结果.

        因此,上述宏定义为:

        #define SQR(x)    ((x) * (x))


 

    3.3.#undef用来撤销宏定义,用法如下:

#define PI 3.141592653
...
//code
#undef PI
//下面的代码就不能用PI了.
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值