• C语言预处理程序[转]


    c语言预处理程序有三种,分别是:

    1.包含头文件,如:#include <stdio.h>

    2.宏定义(本质是字符串的替换)  

    如 :#define  宏名  串(宏体)

    #define  PI  3.14159

    #undef   终止宏定义的作用域

    如:#undef   PI      

    注:双引号内与宏同名的字符串不做宏体展开

    #define  R  3.0 

    #define PI  3.14159

    #define  L  2*PI*R   /*宏体是表达式*/

    注:引用宏只占编译时间,不占运行时间。

    引用宏没有返回值。

    带参数的宏定义的一般形式:

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

    如:#define  S(a,b)  a*b      /* 对宏定义来说参数不需要指明类型 */

    3.条件编译(通常在程序调试中)

    #if  常量表达式(为非零值时执行程序段,为0时不执行)

           程序段(一般是要调试的程序段)

    #endif

    #ifdef   标识符

    程序段一

    #else

     程序段二

    #endif

    功能:标识符之前已经定义,则编译程序段一,否则执行程序段二

    c语言预处理关键字:

    #define             #undef      #include       #if        #ifdef
    #ifndef              #else               #endif              #line
    (注意:#前面不能留空格)

    1.包含文件(include)

    #include “文件名”一般文件
    #inlcude <文件名>系统文件

    编译程序以该文件名的内容来替换该控制行,通常在每个源文件开头出现这样的行,是为了包含公共的#define和全程变量的说明以及函数原型。

    使用#include可把其它文件(往往是.h文件)的内容包含进来,#include还允许嵌套使用,如:

    使用#include的优点

    可以把所有公共的、需要给程序各个函数共享的外部变量说明、函数原型和宏定义、类型定义等都放在某一文件上(通常以.h为文件后缀)。其它文件的开头只须用一条#include “该.h”文件的语句,就可以省去重写这些说明、定义的麻烦,而且程序结构更为清晰。如:

    #include <stdio.h>
    #include <math.h>
    #include “local.h”

    2.宏定义

    格式:
    #define标识符单词串

    编译程序用单词串来替换#define后出现的该标识符。宏定义通常有两种用途:
    1)定义常量
    如:

    #define YES1
    #define EOF-1

    又如:

    #define:==
    #definethen
    #definebegin{
    #defineend;}

    则可以写出Pascal风格的C程序:

    if( i > 0) then
    begin
    a := 1; b:=2;
    end

    宏替换不仅对常量定义有价值,使程序增加可读性,而且许多函数都可以通过宏替换来表示,不必进行频繁的函数调用,但宏替换占有空间比函数大。

    宏定义函数与普通函数的区别:

    实现上,宏函数将相应串替换到函数中,而函数只需提供一个指向其实现代码的指针。
    一般只将相对比较简单的函数用宏实现,其速度要比函数快,但占用更多的存贮间。

    取消宏定义:#undef   YES

    3.条件编译

    C语言预处理程序提供了根据条件对程序段进行有选择地编译的能力,而这些控制行本身不参加编译。
    条件编译形式如下:
    #if 常量表达式
    #ifdef 标识符
    #ifndef 标识符
    如:
    #if 常量表达式

    程序段1                        --常量表达式为真时编译

    #else
    程序段2                         --常量表达式为假时编译
    #endif
    又如:
    #ifdefYES
    …--YES                        已定义时编译
    #else
    …--YES                       未定义时编译
    #endif

    我们经常可在一些头文件中见到下面语句:
    #ifndef _ _THIS
    #define _ _THIS

    #endif
    可用它们来避免该头文件被重复包含。

    4.行控制

    格式:
    #line 常量[标识符]

    常量                   –给定行号
    标识符               –命名当前的输入文件名
    提示编译程序自下行开始的源程序给出该行号。

  • 相关阅读:
    json、txt、xlsx
    word-排版准备与文字清洗
    运营能力分析
    获利能力分析
    偿债能力分析
    现金流量表结构分析
    负债项目分析
    资产负债表分析
    财务报表的分析
    会计电算化账务处理流程8
  • 原文地址:https://www.cnblogs.com/ly0311/p/3536517.html
Copyright © 2020-2023  润新知