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

宏展开出错

 
阅读更多

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

如:#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

分享到:
评论

相关推荐

    完整的华为sourceinsight宏

    完整的华为sourceinsight宏 让你事半功倍

    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 ... ##去做## 支持宏编码。

    C语言的编译原理详解.docx

    1. 预处理阶段:预处理器处理源代码,包括插入头文件、宏展开、条件编译和删除注释等,生成预处理后的源代码。 2. 编译阶段:编译器将预处理后的源代码转换为汇编代码,经过词法分析、语法分析、语义分析和中间代码...

    C语言中define的用法

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

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

    能够将宏的内容展开的工具能够将宏的内容展开的工具(目前已有更新版本,不必下载这个)

    235_emacs lisp cons函数的使用

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

    浅谈C++编译原理

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

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

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

    大机汇编宏代码展开

    The expandmacro_ply.exe is a command on Windows written by Python(then convert to exe), which can expand the HLASM macro statement and can show the steps it be expanded. What can you do by it?...

    2X100MW+2X200MW供热式火力发电厂的电气部分

    2X100MW+2X200MW供热式火力发电厂的电气部分,马向林,聂宏展,本文主要介绍了一个供热式火力发电厂的电气部分及继电保护的设计过程。发电厂作为电力系统的电源点,在电力系统中,它的位置十分

    C语言大纲及课件

     掌握:宏定义、宏调用、宏展开;文件包含中各头文件的使用。  理解:格式输出函数printf及其格式说明的格式字符;格式输入函数scanf及其格式说明的格式字符。带参数的宏定义。  了解:条件编译的概念与作用。  ...

    C语言入门经典(第4版)--源代码及课后练习答案

    开本:16开 页码:571 版次:4-1 编辑推荐  本书是编程语言先驱者Ivor Horton的经典之作,是C语言方面最畅销的图书品种之一,在世界范围内广受欢迎,口碑极佳。  本书的目标是使你在C语言程序设计方面由一位初学者...

Global site tag (gtag.js) - Google Analytics