zoukankan      html  css  js  c++  java
  • 宏、预编译(day12)

    指针数组里的每个存储区是一个指针类型
        的存储区
    字符指针数组里包含多个字符类型指针,其中
        每个指针可以表示一个字符串
    字符指针数组可以用来表示多个相关字符串
    
    主函数的第二个参数是一个字符指针数组,
       其中每个指针代表一个字符串,所有
       这些字符串的内容都来自于用户的命令
    主函数的第一个参数是一个整数,它表示
        第二个参数里的指针个数
    
    #define预处理指令可以用来定义宏
    
    宏可以用来给数字起名字
    定义宏的时候要把宏名称写在#define预处理
        指令后,宏名称后写它所代表的数字
    宏名称通常由大写英文字母构成
    宏名称里不可以包含空格
    用宏给数字起名字的时候不可以使用赋值
        操作符
    可以在程序里使用宏名称代表它所对应的数字,
       编译器会把程序里的所有宏名称替换成
       它所代表的数字
    
    可以在编译命令里使用-D选项临时指定
       宏所代表的数字
    
    宏还可以给一个计算公式起名字
    计算公式里包含未知数字,宏的参数用来
       表示这些未知数字
    
    编译器采用二次替换的方式处理带参数的宏
    
    宏的参数不一定代表数字,所以它没有类型
    如果宏有多个参数就需要用逗号把他们分开
    
    宏不可以使用自己的存储区和函数进行数据
        传递
    宏没有形式参数也没有用来存放返回值的
        存储区
    
    能当作数字使用的宏必须编写成一个表达式
        (因为宏没有用来记录返回值的存储区)
    
    宏的参数直接代表函数的存储区,在宏里对
        参数内容的修改可以直接影响函数
    
    因为宏没有用来记录返回值的存储区,所以
       不能保证优先计算宏里面的操作符
    所有能当作数字使用的宏必须写在一对小括号
       里面
    
    宏没有形式参数所以不能保证优先计算参数
        里面的操作符
    编写宏的时候所有能当做数字使用的参数也都
       必须写在小括号里面
    
    不要把自增或自减的结果作为宏的参数使用
    
    编写宏的时候可以使用一些特殊的符号,它们
        叫做宏操作符
    
    #是一个宏操作符,它可以把宏的参数转换
        成字符串字面值
    ##也是一个宏操作符,它可以把一个代表
         标识符的参数和其他内容连接得到
         一个新的标识符
    
    条件编译可以在编译的时候从几组语句里
        选择一组编译而忽略其他组
    #ifdef/#ifndef...#else...#endif
    以上结构可以根据一个宏名称是否被定义过
        从两组语句中选择一组编译
    最开始的预处理指令应该从两个里选择一个,
        它们的后面都要跟着一个宏名称
    如果选择#ifdef就表示它后面的宏名称被定义
        过就编译前一组语句,否则编译后一组
        语句 
    如果选择#ifndef就刚好相反
    
    #if...#elif(任意多次)...#else...#endif
    这个结构也可以实现条件编译,它可以根据
        任意逻辑表达式从多组语句中选择一组
        编译
  • 相关阅读:
    IDEA导入jar包
    怎么在idea中新建package包,只有directory选项
    Python在自动化运维时经常会用到的方法
    SocketServer 网络服务框架
    导入自定义包
    socket编程
    在线安全清空慢查询日志slowlog
    OS X中微信双开
    OS X中crt中文乱码
    谈谈TCP中的TIME_WAIT
  • 原文地址:https://www.cnblogs.com/Kernel001/p/7735181.html
Copyright © 2011-2022 走看看