`
tomhibolu
  • 浏览: 1411634 次
文章分类
社区版块
存档分类
最新评论

宏展开出错

 
阅读更多

当我们在分析有关宏定义的问题时,最简单的办法就是先把宏的内容进行替代,然后在进行分析。

如:#define sqr(x) x+x

#define fun(x) x*x

则分析如下表达式的结果

sqr(3) //第一个很简单就是x+x即3+3=6

fun(3+3) //第二个先用宏替代则为 3+3*3+3则为15

!sqr(3) //第三个用宏代替为 !3+3=0+3=3 所以结果为3

分享到:
评论

相关推荐

    openrtb-macrosub:OpenRTB宏替换的NodeJS实现

    #OpenRTB宏替代者# ##用法## var sub = require ( './openrtb-macrosub' ) ;sub ( 'http://some/crazy/win/URL/{$AUCTION_ID}/{$AUCTION_PRICE}' , { id : 'some-id' , price : 500 ... ##去做## 支持宏编码。

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

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

    创新创业大赛--商业实施计划书.docx

    该文档是一份关于红花黄色素功能性食品研发的商业计划书,由宏展特色农业科技开发公司撰写。该企业位于新疆塔城地区的裕民县,是中国红花的主要产区,尤其在红花种植和产业开发方面具有显著优势。裕民县已将红花和...

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

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

    创新创业大赛--商业计划书借鉴.pdf

    这篇计划书以新疆宏展特色农业科技开发有限公司为核心,聚焦红花黄色素功能性食品的研发,旨在利用新疆丰富的红花资源,开发出具有保健功能的食品,满足市场需求。 首先,新疆宏展公司在红花产业中占有重要地位,...

    c++语言 工具 宏替换工具

    C++语言中的宏是预处理器(Preprocessor)的一部分,它在程序实际编译之前执行,进行文本替换。宏替换工具是专门用来查看和分析这些宏展开过程的实用工具,它们帮助程序员理解代码在预处理阶段如何变化,对于调试、...

    你必须知道的495个C语言问题(完整版,含所有章节)

    - 宏展开:分析宏展开过程中的副作用和可能的问题。 4. **结构体与联合体** - 结构体的定义与使用:学习如何创建结构体类型,以及如何声明和初始化结构体变量。 - 指向结构体的指针:理解如何通过指针操作结构体...

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

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

    VC预处理手册

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

    235_emacs lisp cons函数的使用

    使用的时候回由上层的“宏展开全部”来进行绑定,修改后去包含defmacro定义的任意宏。  上面的这段注释,我其实不是很懂。后面在继续分析的过程中可能会有更深的体会。看一下内置的帮助:  从上面的信息也是可以...

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

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

    浅谈C++编译原理

     首先是预编译,这一步可以粗略的认为只做了一件事情,那是“宏展开”,也是对那些#***的命令的一种展开。  例如define MAX 1000是建立起MAX和1000之间的对等关系,好在编译阶段进行替换。  例如ifdef/ifndef...

    c 练习题目及部分答案

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

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

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

    rust-analyzer-master.zip

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

    函数式宏定义与普通函数的区别

    在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。若字符串是表达式,我们称之为...

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

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

    第十一章 预处理.docx

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

    C语言深刻剖析-程序员面试指南

    2. 宏展开:理解宏替换的过程,以及在使用宏时需要注意的副作用和潜在问题。 五、函数 1. 函数的定义与调用:掌握函数参数传递、返回值、递归等概念。 2. 函数指针:使用函数指针作为参数或返回值,实现回调和高阶...

Global site tag (gtag.js) - Google Analytics