zoukankan      html  css  js  c++  java
  • 黑马程序员--预处理

    预处理


    预处理程序用于在编译器真正地看到代码之前分析源文件。


    预处理的功能

    1》用等价形式代替连字序列

    2》将所有以斜线字符()结尾的行连接到同一行

    3》将程序划分到某个标记流中

    4》删除注释,并将注释替换为单个空格

    5》处理预处理程序指令并扩展宏指令


    预处理程序指令


    所有的预处理程序指令都以字符#开头,它必须是命令所在行的第一个非空白字符。字符#之后可以有选择地跟随一个或多个空白或者制表符



    #define指令

    格式1:

    #define name text


    在程序中使用name 时,将会直接代替程序响应位置的text


    格式2:

    #define IS_LEAP_YEAR(y)   y % 4 == 0 && y & 100 != 0 || y%400 == 0


    用于判断是否为闰年


    格式3:


    #define SQUARE(v)  ((v) * (v))


    一定要给变量加上括号


    # 和  ##


     #define str(x)  #x


    str(testing)将扩展为”testing”


    #define printint(x) printf(#x “ = %i”,x)

    printint(count) ;预处理后为

    printf(“count = %i”,count);

    #define printx(n) printf(“%i ”,x##n)

    printx(5);预处理后

    printf(“%i”,x5);


    #和##字符两侧不允许出现空格


    #error  text   ….

    预处理程序将特定的text编写成一条出错消息



    #if指令


    格式1:

    #if constant_experssion

    #endif


    格式2:

    #if constant_experssion

    #elif constant_experssion2

    #elif constant_experssion3

    #else

    #endif


    #ifdef指令


    #ifdef identifer

    #endif


    #ifndef指令


    #ifndef indentifer

    #endif


    #import 指令


    #import <fileName>


    #import “fileName”


    自己写的用  ” ”,系统自带的用< >


    #include指令用法同#import,但是少了除重功能




    #undef指令

    #undef identifer

    解除identifer的宏定义




    #import除重功能实现


    原理:


    #ifndef debug

    //文件内容

    #define debug  TRUN

    #endif 

  • 相关阅读:
    对我影响最大的老师
    秋季学习总结
    介绍自己
    搭建新环境的准备工作
    我的技术博客开通啦!!
    java数组及数组的插入,删除,冒泡算法
    包(package)以及面向对象三个基本特征(继承)的介绍
    常用的Arrays类和二维数组以及二分法的介绍
    构造方法、封装、关键字(this、static)和代码块的介绍
    类和对象的介绍
  • 原文地址:https://www.cnblogs.com/frozen1224/p/4239736.html
Copyright © 2011-2022 走看看