• 黑马程序员--预处理


    预处理


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


    预处理的功能

    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中Timer的用法
    Java ThreadFactory接口用法
    ThreadPoolExecutor使用介绍
    linux命令学习-4-lsof
    备份文件-域名+日期扫描
    Trickbot展示新技巧:密码抓取器模块
    Trickbot增加的远程应用程序凭证抓取功能
    基于ATT和CK™框架的开放式方法评估网络安全产品
    调试键盘纪录类型的样本
    LordPE修复从进程dump出来的内存文件
  • 原文地址:https://www.cnblogs.com/frozen1224/p/4239736.html
Copyright © 2020-2023  润新知