`
isiqi
  • 浏览: 16582489 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

宏展开

阅读更多

最近实在太忙,经常能搞到12点以后,唉....随便写点,不然又要废了...

关于红展开,其实宏本身是很简单的,但是有的时候看到一些开源软件里强大复杂的宏写法,还真是心里毛毛的,毕竟看这玩意是需要很强的耐心的,但是没关系,很多编译器都支持预处理展开宏,这里说一下vs的操作方式:

visual studio 中,选择项目属性 - 〉配置属性 - C/C++- 〉预处理器,在“生成预处理文件”中选择生成预处理文件,“不带行号 (/EP /P) ”或“带行号 (/P) ”,那么就会在项目所在文件夹下生成一个与源文件同名的“ .i ”文件,该文件为展开宏以后的代码文件。

要注意,设成这样以后,及不再生成obj文件了,换句话说,仅仅是用于生产预处理过后的文件。而且你会发现,这些.i文件异常的大,里面包括了各种宏的展开,如果你包含了windows.h,就有你受的了。

bug:在联合编译器下,是无法生成.i文件的,估计联合编译器根本没有考虑到这个用途,其实只要连接一个命令就ok了。

一般用法,在工程设置中射完后,找到一个需要展开宏的文件,ctrl+F7,这样比较高效,准确性也高。

分享到:
评论

相关推荐

    宏汇编汇编语言PPT学习教案.pptx

    - **宏展开**:汇编器在处理宏调用时,会用宏定义体替换调用的地方,并将实参值替换形参,形成新的汇编代码。 如: ```asm FILLSEG DATA ``` 在这个例子中,`DATA`是实参,它替代了宏定义中的`Dsegname`。 3...

    宏汇编,主要就是介绍的宏汇编

    宏展开有助于代码的模块化,使得重复的代码块可以被一个简单的宏调用替代,从而节省内存。然而,宏展开也可能会增加程序的大小,因为每次宏调用都会导致代码的复制。 宏指令通常包括伪指令和实际的机器码指令。伪...

    微型计算机原理考试题.pdf

    8. 宏功能的使用顺序:宏定义(macro definition)、宏调用(macro call)、宏展开(macro expansion),所以正确顺序是C)宏定义,宏调用,宏展开。 9. 填空题: - 16位机器字长下,N1=117,其二进制表示为...

    C++笔试题面试题

    2. **宏展开**:宏在编译前进行文本替换,不会进行类型检查和语法分析。 **题目解析**: 题目中的代码展示了宏定义`#define SQR(X) X*X`的使用及结果。 - **宏定义**:`#define SQR(X) X*X`定义了一个简单的宏,...

    (完整word版)C语言简答题答案.doc

    在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。 宏与函数的区别: 1. 宏定义与宏调用是为了减少书写量和提高运行速度;而函数定义、函数调用是为了...

    rust-analyzer-master.zip

    7. **宏展开**:Rust的宏系统强大但复杂,rust-analyzer能够解析宏并展示展开后的代码,便于理解和调试。 8. **模块系统理解**:准确地处理Cargo工作区和项目的依赖关系,提供完整的项目视图。 9. **集成到各种IDE...

    计算机语言讲义

    预处理器宏定义允许创建常量替代(如#define PI 3.14)和代码替换(宏展开),增强了代码的可读性和灵活性。 总的来说,C语言讲义涵盖了编程的基础知识,旨在帮助学习者理解并掌握C语言的核心概念和编程技巧。通过...

    设计2词法分析之基于Lex实现词法分析.pdf

    除此之外,词法分析器还需要滤掉空格,跳过注释、换行符追踪换行标志,复制出错源程序,宏展开,等等。 6. 词法分析工作的独立性:词法分析工作可以独立于语法分析工作,以简化设计,改进编译效率,增加编译系统的...

    大学教程编译原理课件2

    1. **宏展开(Macro Expansion)**:这是最直接的方法,将每种类型的中间代码指令替换为等效的目标代码指令序列。例如,三地址码 `a = b + c` 可以直接转换为P-Code序列 `lda a; lod b; lod c; add; sto`。 2. **...

    微型计算机原理考试题.doc

    10.宏功能的顺序:在汇编语言程序的开发过程中使用宏功能的顺序是宏定义、宏调用、宏展开。 11. 机器字长的表示:设机器字长为 16 位,若 N1=117,用二进制数和 16 进制数表示时分别为 1110101B 和 75H。若 N2= –...

    VC预处理手册

    这些任务主要包括宏定义与取消定义、宏展开、条件编译、文件包含以及错误信息指示等。 #### 二、预处理器的功能 - **定义和取消定义宏**:通过`#define`和`#undef`指令来实现。 - **宏展开**:在编译前将宏定义替换...

    1.C面试题分类.doc

    - 宏替换(宏展开)在预处理阶段发生,`#undef`用于删除宏定义。 - 定义宏时,参数加括号能确保运算顺序不受影响,这是推荐的做法。 - 宏不能递归,但宏展开通常比函数调用更快。 - `#`用于将参数转化为字符串,...

    817-3946.pdf Oracle Solaris 9 - man pages section 5: Standards,

    在 Oracle Solaris 9 中,man page第5章节也提供了大量的宏信息,包括宏定义、宏展开、宏应用等。这些宏信息是 для开发者和系统管理员必须了解的,才能正确地使用操作系统提供的宏功能。 在宏定义方面,Oracle ...

    吉林大学远程教育课件-C语言程序计-6.ppt

    宏替换是预处理中的一项基础功能,它允许程序员定义一个符号(宏名),并用它来替代一个特定的文本串(宏展开)。这种替换是在编译器实际编译源代码之前进行的,因此可以对源代码进行静态的文本替换,增加代码的...

    HITcsapp2023大作业-20211113258

    预处理是指在编译之前对源代码进行的处理过程,包括语法检查、宏展开、头文件包含等步骤。预处理的作用是将源代码转换为可被编译器识别的格式。 知识点5:编译的概念和作用 编译是指将源代码转换为机器代码的过程,...

    QT理论试题及答案.pdf

    QT 理论试题及答案 以下是对 QT 理论试题的详细解释和知识点总结: 1. QT 是一个跨平台的 C++ 图形用户界面,它由挪威的 TrollTech 公司出品,支持多种平台,包括 Unix、...知识点:元对象编译器、预处理程序、宏展开

    第十一章 预处理.docx

    在编译预处理时,对程序中所有出现的"宏名",都用宏定义中的字符串去代换,这称为"宏代换"或"宏展开"。 宏定义可以分为有参数和无参数两种。无参数宏定义的定义的一般形式为:#define 标识符 字符串,其中"#'表示这...

    c 练习题目及部分答案

    8. **预处理指令**:如#define常量定义、宏展开,以及#include文件包含。 9. **文件操作**:学习如何打开、读取、写入和关闭文件,以及文件流操作。 10. **错误处理**:了解如何使用errno和perror进行错误处理。 ...

    汇编语言课件:第7讲 高级汇编语言技术.pdf

    - **宏展开**:汇编器会将宏调用替换为其定义时的代码,这就是宏展开。例如,`savereg`宏的调用会替换为一系列`push`指令。 - **局部标号**:在宏定义中可以使用`LOCAL`关键字声明局部标号,用于控制流程,如`...

    嵌入式软件工程师笔试题.docx

    知识点:宏定义、宏展开、函数式编程。 10. 编译错误中,不属于编译错误的是改变 x 的原值 3 为 5,写作“x==5;”。 知识点:编译错误、语法错误、逻辑错误。 11. 程序段运行后,x 的值是 0,因为逻辑运算符的...

Global site tag (gtag.js) - Google Analytics