vs2008添加lib 新添加的行以阴影显示

随笔 - 51&
文章 - 0&评论 - 4&trackbacks - 0
微软的Visual Studio 2008(VS2008)提供了一个新的选项,给用户显示C++对象在内存中的布局。
这个选项就是/d1reportSingleClassLayout。
具体使用方法如下,在写好相应的cpp文件之后,需要启动VS2008的命令行工具&Visual Studio 2008 Command Prompt&,切换到cpp文件所在目录之后,输入如下的命令:
cl [filename].cpp /d1reportSingleClassLayout[className]
cl当然就是MS的编译器咯;[filename].cpp就是你所想要查看的class所在的cpp文件(class定义在头文件也没关系,还是只要编译cpp文件即可);而你需要在最后加上[className],也就是你需要查看的class的类名。
Test.cpp文件代码如下:
#include &iostream&using namespaceclass Base{public:&&&&int&&&&virtual void fcn() {};};class Derived : public Base{public:&&&&virtual void fcn2() {};private:&&&&int&&&&void fcn3() { }};int main(void) {}
我想查看Derived这个类的对象在内存中的布局,那么就可以用下面的命令行。
cl Test.cpp /d1reportSingleClassLayoutDerived
结果显示如下:
可以看到class Derived的对象的内存布局,在派生类对象的开始包含了基类Base的对象,其中有一个虚表指针,指向的就是下面的Derived::$vftable@ (virtual function table),表中包含了Derived类中所有的虚函数。
【再举一例】
下面是一个经典的虚继承的菱形继承结构的代码:
#include &iostream&using namespaceclass Base{public:&&&&int&&&&virtual void fcn1() {};};class Derived1 : public Base{public:&&&&int&&&&virtual void fcn2() {};};class Derived2 : public Base{public:&&&&int&&&&virtual void fcn3() {};};class Child : virtual public Derived1, virtual public Derived2{public:&&&&int&&&&virtual void fcn4() {} ;};int main(void) {}
其对应的显示结果则如下:
其中{vbptr}表示虚继承的虚基类指针。然后这个Child类其实有三个虚函数表指针(图中的三个{vfptr}),下面则分别给出了虚基类指针和三个虚函数表指针的具体内容。其中的那些负数表示这些指针举例对象起始位置的offset。
=============================================
最后加一句,我并不支持这种非要深入研究对象内存布局的行为,再说这种布局完全是由编译器决定的,GCC的内存布局很可能就完全不同。这个对提高C++水平并没有多大的益处。点到为止。
阅读(...) 评论()10323人阅读
C/C++(76)
项目名称右键 -& 属性 -& 项目属性页 -& 配置属性&-&&调试&-&&命令参数:在这里设置即可。
注意问题:&
(1) 这里隐含了第一个参数,即可执行文件路径(如,X:/Path1/Path2/Test.exe);&
(2) 多个参数必须用空格分隔。一个空格和多个空格效果一样,编译器将其解释为一个空格;逗号和分号不能用来分隔各参数,如果写上,会被认为是参数的一部分;&
(3) 如果参数中包含有空格,则这个参数应该用英文状态下的双引号括起来做为一个整体。如,"- & ¶X" 表示了一个参数:&- & ¶X。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:345665次
积分:4133
积分:4133
排名:第5917名
原创:72篇
转载:58篇
评论:76条
(1)(1)(1)(3)(6)(5)(6)(2)(8)(1)(1)(10)(5)(10)(8)(5)(11)(4)(2)(3)(6)(9)(9)(4)(1)(8)VS2008怎么让焦点所在的行高亮.-.NET技术/C#-c/c++-电脑编程网VS2008怎么让焦点所在的行高亮.-.NET技术/C#作者:qq 和相关&&VS2008 怎么让焦点所在的行 高亮.我说的VS2008 这个编辑器.------回答---------------其他回答(5分)---------每天回帖即可获得10分可用分! &
小顶下 ------其他回答(5分)---------好像VS2010里面有这个动能,VS2008 我还不知道怎么弄。。------其他回答(5分)---------引用 5 楼 qq 的回复:没有人JF?楼主结贴!!------其他回答(5分)---------我也想知道------其他回答(5分)---------好像没有,要不就装个插件看看有没有这个功能~------其他回答(5分)---------不知道耶.------其他回答(5分)---------这里好像无法设置达到你要的效果!------其他回答(5分)---------路过,学习了~------其他回答(5分)---------学习学习------其他回答(5分)---------帮顶
学习 ------其他回答(5分)---------我是来接分的 ------其他回答(5分)---------没这一功能 纯接分------其他回答(10分)---------楼主没看过2010的介绍么?那是2010的新特性之一。------其他回答(5分)---------接分来拉!------其他回答(5分)---------up------其他回答(5分)---------
up ------其他回答(5分)---------装个Visual assist看看能不能达到你的要求?------其他回答(5分)---------没这个功能吧!------其他回答(5分)---------08没这个功能相关资料:|||||||VS2008怎么让焦点所在的行高亮.-.NET技术/C#来源网络,如有侵权请告知,即处理!编程Tags:                &                    

参考资料

 

随机推荐