首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

define到底如何扫描的(define的嵌套)

2013-10-03 
define到底怎么扫描的(define的嵌套)#define X 3#define Y X*2#undef X#define X 2int zY结果是4可是去掉

define到底怎么扫描的(define的嵌套)
#define X 3
#define Y X*2
#undef X
#define X 2
int z=Y
结果是4

可是去掉#define X 2
cout<<Y反尔编译不过去为什么,为什么不是输出X*2(不进行替换的)
还有
#define X 3
#define Y X*2
cout<<Y

#define Y X*2
#define X 3
cout<<Y
为什么结果都是6,到底从哪来扫描到哪里,扫几遍
[解决办法]
这个需要宏调试...宏调试ms没有好的工具.只好手工调试.

我使用的ide是qt creator..

比如.

#define Y X*2
#define X 3

//#include <iostream>

using namespace std;

int main()
{
    cout<<Y;
    return 0;
}

第一,把//#include <iostream>注释掉,贝儿扩展开代码太长了..
第2.编译这个cpp,ide会出来提示..不个其中的参数改给挂..
g++   -pipe -fno-keep-inline-dllexport   -g -frtti -Wall -Wextra -fexceptions -mthreads -DUNICODE -DQT_QML_DEBUG -DQT_DECLARATIVE_DEBUG -I..\macroExtend -I"." -I"..\..\Qt\Qt5.1.1\5.1.1\mingw48_32\mkspecs\win32-g++" -E ..\macroExtend\main.cpp
注意:-E必须大写..
第3.运行这个命令.出来以下宏的运行结果..
 


using namespace std;

int main()
{
    cout<<3*2;
    return 0;
}

热点排行