码迷,mamicode.com
首页 > 其他好文 > 详细

第八章 编译预处理

时间:2017-12-07 21:56:30      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:字母   内容   自己   编译   编译环境   efi   大写   文本   出错   

 

  • 编译预处理指令
1)宏定义
(2)条件编译
(3)文件包含
  • 宏定义

  宏定义是指将一个标识符(又称宏名)定义为一个字符串(或称替换文本)。在编译预处理时,对程序中出现的所有宏名都用相应的替换文本去替换,这被称为“宏替换”或“宏展开”。C语言中,“宏定义分为无参宏定义和带参宏定义两种。

    • 无参宏定义  
#define 标识符 替换文本

#define     表示该语句行是宏定义命令
标识符      所定义的宏名,习惯上用大写字母表示
替换文本    可以是常量、关键字、表达式、语句等任意字符串。
    • 带参宏定义
带参宏定义的一般形式为:
#define 宏名(形参表) 替换文本  //中间没有空格

如:
#define M(y) y*y+3*y //宏定义   //形参一般用括号括起来
...
k = M(5);  //宏引用
...
宏展开时,先用 y*y+3*y 替换M(5),再将文本中的形参y用实参5代替,最终得到:k=5*5+3*5;

 

   

条件编译

  • 条件编译的三种形式
条件编译有三种形式:

(1)如果标识符是已经被#define定义的宏名,就编译程序段1,否则,编译程序段2
#ifdef 标识符
    程序段1
#else
    程序段2
#endif

(2)与第一种相反,如果标识符未被定义,则对程序段1进行编译
#ifndef 标识符
    程序段1
#else
    程序段2
#endif

(3)如果常量表达式的值为非真(0),则执行程序段1
#if 常量表达式
    程序段1
#else
    程序段2
#endif

 

 

文件包含

所谓文件包含是指在一个文件中包含另一个文件的全部内容,使之成为该文件的一部分。
文件包含由文件包含命令#include来实现,其一般形式为:

#include<文件名>   //格式一
#include"文件名"   //格式二

“文件名”是指被包含的文件,称为头文件。
文件包含命令的功能是将指定头文件的内容包含到该命令出现的位置并替换此命令行。

    格式一与格式二的主要区别是在存放头文件的路径上。
    格式一的预处理程序只在系统规定的目录(include子目录,由用户在设置编译环境时设置)中
去查找指定的头文件,若找不到,则出错,这成为标准方式。如标准库函数一般都使用格式一。
    使用格式二时,预处理程序现在当前工作目录中寻找指定的头文件,若找不到,再按标准方式
去查找。用户自己编写的头文件一般都使用格式二。
    格式二中的双引号内可以含有路径,如:
#include"C:\TC\F2.c"

 

第八章 编译预处理

标签:字母   内容   自己   编译   编译环境   efi   大写   文本   出错   

原文地址:http://www.cnblogs.com/h-wang/p/7607711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!