zoukankan      html  css  js  c++  java
  • iOS开发——C篇&预处理

    其实在C语言的远行过程中,有这样一个流程,

    编译:C----〉可执行文件(可以运行的)

    1:.C------.i 预处理(之前和之后还是C语法)
    2: .i-------.s 编译(之前是C语法,之后是汇编语法)
    3: .s------.o 汇编
    4: .o------可执行程序 链接

    下面我们就来说说一说第一个步骤预处理阶段:

    一:预处理介绍

    1. 预处理:单纯的宏的替换
    2. 宏:发生在预处理阶段的单纯的字符串的替换
    3. C语言提供了多种预处理功能,如宏定义、文件包含、 条件编译等

     

    二:预处理中宏的定义无参宏定义
    #define M (x+y+3+xy)带参宏定义
    #define M(x,y) (x+xy+3+xy)三:宏的使用main(){
      int Num = M;  int Num2 = M(2,5);  printf("%d, %d", Num, Num2);
    }这里我们就使用了上面定义的两个宏,也就是实现了预处理命令的使用

    指针变量:NULL---》(void *)0可赋值任何类型的指针

    整形:0

    四:常用预处理命令

    e>预定义的宏(不能用undef取消)
    C标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。
    __DATE__
    进行预处理的日期(“Mmm dd yyyy”形式的字符串文字)
    __FILE__
    代表当前源代码文件名的字符串文字
    __LINE__
    代表当前源代码中的行号的整数常量
    __TIME__
    源文件编译时间,格式微“hh:mm:ss”
    __func__
    当前所在函数名
    对于__FILE__,__LINE__,__func__这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数。
    下面一个例子是打印上面这些预定义的宏的。

    五:预处理总结

    • 1. 预处理功能是C语言特有的功能,它是在对源程序正式编译前由预处理程序完成的。程序员在程序中用预处理命令来调用这些功能。
    • 2. 宏定义是用一个标识符来表示一个字符串,这个字符串可以是常量、变量或表达式。在宏调用中将用该字符串代换宏名。
    • 3. 宏定义可以带有参数,宏调用时是以实参代换形参。而不是“值传送”。
    • 4. 为了避免宏代换时发生错误,宏定义中的字符串应加括号,字符串中出现的形式参数两边也应加括号。
    • 5. 文件包含是预处理的一个重要功能,它可用来把多个源文件连接成一个源文件进行编译,结果将生成一个目标文件。
    • 6. 条件编译允许只编译源程序中满足条件的程序段,使生成的目标程序较短,从而减少了内存的开销并提高了程序的效率。
    • 7. 使用预处理功能便于程序的修改、阅读、移植和调试,也便于实现模块化程序设计。

    这里说一下关于typedef和宏的区别

    1:宏后面是不需要加;的

      而typedef后面需要加;

    2:typedef的作用域时每个{}之内

    宏的作用域从申明到文件结束

  • 相关阅读:
    IfcFurnishingElementType
    IfcRelAssociatesClassification
    IfcRelAssociatesDocument
    IfcContext
    IfcRelAssociatesMaterial
    我是高敏感的人,你呢?
    介绍一本红色的书
    矫枉必须过正
    大家都在说的民法典,与我有何关系?
    线上Kafka突发rebalance异常,如何快速解决?
  • 原文地址:https://www.cnblogs.com/Alex-Phoenix/p/4654184.html
Copyright © 2011-2022 走看看