预处理命令

在C程序中的“预处理命令”,是由ANSI C规定的,但不属于C语言的组成部分,因为编译程序不能识别他们,所以并不能直接对它们编译。在编译之前,程序需要对这些特殊的命令做些“预处理”。

宏定义

  • 不带参数的宏定义
    即用一个指定的标识符(即名字)来代表一个字符串,一般形式为

    
    #define 标识符 字符串
    
    
    #define PI 3.14
    

    在编译程序时的函数前定义PI,作用是在此程序中出现的PI都代替3.1415926,我们可以用一个简单的名字代替一个长长的字符串,所以就把这个标识符就是刚才提到的名字称为“宏名”,而把宏名代替字符串的过程成为“宏展开”。#define是宏定义命令。
    (1) 宏名一般习惯用大写字母表示,以便与变量相区别,但这并不是规定,也可用小写代替。
    (2)不必在宏定义后加分号,加了分号会连分号一起置换。
    (3)#define的命令是在程序中函数的外面,宏名的有效范围是在本次程序结束前,而使用#undef命令可以结束宏定义的作用范围。
    (4)在进行宏定义时,可以引用已定义的的宏名。例如:

#define R 3
#define PI 3.14
#define S 2 * PI * R
#define L PI * R * R

(5)对双撇号里括起来的字符串里的字符,即使与宏名相同,也不进行置换。
(6)宏定义只进行置换,不分配内存空间。

  • 带参数的宏定义
    带参数的的宏定义除了进行字符串替换还要进行参数替换。一般形式为

    
    #define 宏名 (参数表) 字符串
    

    带参数的宏展开,就是将语句中的实参字符串代替给定义中的形参。
    在宏定义时,在宏名与带参数的括号之间不赢家空格,否则将空格以后的字符都作为代替字符的一部分。

    文件包含

    文件包含就是一个源文件将另一个源文件包含起来,执行时除了执行本文件的内容还要执行包含进来的文件。一般形式为

    
    #include"文件名”
    
    
    #include<文件名>
    

    使用文件包含可以减少程序员的工作量。

    条件编译

    一般情况下,程序中的所有行都要参加编译,但是有时只需要程序中部分内容参加编译,对于这部分内容指定变异的条件,被叫做“条件编译”。类似于条件语句。满足条件时执行这一组语句,不满足条件时执行另一组语句。
    一般形式:

#ifdef标识符
     程序段1
#else
     程序段2
#endif

他的作用是若指定的标识符已经被定义过,则在程序编译阶段编译程序段1, 否则编译程序段2。

#ifndef标识符
     程序段1
#else
     程序段2
#endif

这种的作用是若标识符未被定义过,编译程序段1,否则编译程序段2。与上面那个作用完全相反。

#if 表达式
     程序段1
#else
     程序段2
#endif

这种作用是当指定表达式为真时编译程序段1,否则编译程序段2。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值