zoukankan      html  css  js  c++  java
  • 预处理01 零基础入门学习C语言50

    第九章:预处理01

     

    让编程改变世界

    Change the world by program


     

    预处理,其实我们很熟悉

      在前面各章中,已多次使用过以“#”号开头的预处理命令。 如包含命令#include <stdio.h>,宏定义命令#define PI 3.1415926等。 在源程序中这些命令都放在函数之外,而且一般都放在源文件的前面,它们称为预处理部分。  

    无参宏定义

    无参宏的宏名后不带参数。其定义的一般形式为:

    #define 标识符 字符串

    其中的“#”表示这是一条预处理命令。 凡是以“#”开头的均为预处理命令。 define 为宏定义命令。“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。  

    实例认识问题

    例如:

    #define PI 3.1415926

    它的作用是指定标识符PI来代替数3.1415926。 在编写源程序时,所有的3.1415926都可由PI代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用3.1415926表达式去置换所有的 宏名PI,然后再进行编译。   实例:example01.c (下载源代码)  

    对于宏定义还要说明以下几点:

    (一)宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。如有错误,只能在编译已被宏展开后的源程序时发现。   (二)宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。   (三)宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用# undef命令。   (四)宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换。 实例2:example02.c  (下载源代码)   (五)宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层层代换。   (六)习惯上宏名用大写字母表示,以便于与变量区别。但也允许用小写字母。 实例3:example03.c (下载源代码)   (七)可用宏定义表示数据类型,使书写方便。 例如:

    #define INTEGER int

    我们看看windows的做法:Try (下载源代码)  

    注意:宏定义表示数据类型和用typedef定义数据说明符的区别

    区别:宏定义只是简单的字符串代换,是在预处理完成的,而typedef是在编译时处理的,它不是作简单的代换,而是对类型说明符重新命名。被命名的标识符具有类型定义说明的功能。 请看示例:example04.c (下载源代码)   (八)对“输出格式”作宏定义,可以减少书写麻烦。 实例5:example05.c (下载源代码)   [buy] 获得所有教学视频、课件、源代码等资源打包 [/buy] [Downlink href='http://kuai.xunlei.com/d/LUGWIEONGYJZ']视频下载[/Downlink]
  • 相关阅读:
    关闭编辑easyui datagrid table
    sql 保留两位小数+四舍五入
    easyui DataGrid 工具类之 util js
    easyui DataGrid 工具类之 后台生成列
    easyui DataGrid 工具类之 WorkbookUtil class
    easyui DataGrid 工具类之 TableUtil class
    easyui DataGrid 工具类之 Utils class
    easyui DataGrid 工具类之 列属性class
    oracle 卸载
    “云时代架构”经典文章阅读感想七
  • 原文地址:https://www.cnblogs.com/LoveFishC/p/3847026.html
Copyright © 2011-2022 走看看