﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-止于自娱-随笔分类-备忘</title><link>http://www.cppblog.com/yuziyu/category/11183.html</link><description>每天进步一点点,Coding Everyday!</description><language>zh-cn</language><lastBuildDate>Mon, 27 Jul 2009 12:20:30 GMT</lastBuildDate><pubDate>Mon, 27 Jul 2009 12:20:30 GMT</pubDate><ttl>60</ttl><item><title>[备忘]函数调用约定</title><link>http://www.cppblog.com/yuziyu/archive/2009/07/23/90900.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Thu, 23 Jul 2009 02:58:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/07/23/90900.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/90900.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/07/23/90900.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/90900.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/90900.html</trackback:ping><description><![CDATA[常见的调用约定有： 
stdcall 
cdecl 
fastcall 
thiscall 
naked call<br />stdcall是pascal语言的默认调用约定，从右向左压栈，由被调用者负责清栈<br />cdecl是c语言的默认调用约定，从右向左压栈，由调用者负责清栈。<br /><img src ="http://www.cppblog.com/yuziyu/aggbug/90900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-07-23 10:58 <a href="http://www.cppblog.com/yuziyu/archive/2009/07/23/90900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[备忘]'#'号的预处理</title><link>http://www.cppblog.com/yuziyu/archive/2009/07/17/90356.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Fri, 17 Jul 2009 08:55:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/07/17/90356.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/90356.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/07/17/90356.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/90356.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/90356.html</trackback:ping><description><![CDATA[
		<br />#define macro(x) {#x,do_##x}<br />macro(hello)<br />预处理后展开为:<br />{"hello",do_hello}<br /><br /><img src ="http://www.cppblog.com/yuziyu/aggbug/90356.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-07-17 16:55 <a href="http://www.cppblog.com/yuziyu/archive/2009/07/17/90356.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[备忘]内存对齐问题</title><link>http://www.cppblog.com/yuziyu/archive/2009/07/15/90145.html</link><dc:creator>YZY</dc:creator><author>YZY</author><pubDate>Wed, 15 Jul 2009 08:37:00 GMT</pubDate><guid>http://www.cppblog.com/yuziyu/archive/2009/07/15/90145.html</guid><wfw:comment>http://www.cppblog.com/yuziyu/comments/90145.html</wfw:comment><comments>http://www.cppblog.com/yuziyu/archive/2009/07/15/90145.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yuziyu/comments/commentRss/90145.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yuziyu/services/trackbacks/90145.html</trackback:ping><description><![CDATA[
		<br />昨天和wub讨论，为什么struct对齐的时候，double类型的地址要以8对齐。<br />对齐的目的就是为了方便和加速处理器读取，那么只需要和字长对齐就可以了。<br />根据这两篇文章：<a href="http://blog.csdn.net/warrior3/archive/2006/11/20/1399591.aspx"><font size="3">《内存对齐与ANSI C中struct型数据的内存布局》</font></a>vs<a href="http://hi.baidu.com/phps/blog/item/f03eb93ee12f49fa838b1365.html">《难以理解的《内存对齐与ANSI C中struct型数据的内存布局》</a><a href="http://hi.baidu.com/phps/blog/item/f03eb93ee12f49fa838b1365.html">》</a><font size="3">gcc和vc下是不同的。<span style="font-size: 12pt; color: black;">对于double类型，默认gcc的</span><span style="font-size: 12pt; color: black;">对齐模数</span></font><span style="font-size: 12pt; color: black;"><font size="3">是4,VC是8.<br />内存对齐是与处理器，编译器，编译选项相关的，因此单纯给出一个struct，问其sizeof是多少，这样的问法是不严谨的。回答该问题，应该加以说明运行环境。<br />vc的默认对齐模数是：sizeof(该类型)<br />gcc的默认对齐规则是：byte为1,char为2,其他均为4.</font><br />由上可知<br />struct s{<br /> char c;<br /> double d;<br />};<br /><br />gcc下<br />sizeof(s) = 4+8 ＝ 12<br />vc下<br />sizeof(s) = 8+8 = 16<br /><br />那么 struct s{<br />double d;<br />char c;<br />};<br />起初我认为c以后不需要填充，因此gcc下sizeof(s)=8+1 = 9。但事实应该是sizeof(s)==8+4 = 12。<br />因为对于数组来说，要保证数组的大小等于数组的个数乘以元素的大小。因此c之后也是需要填充的,这样后续的元素的地址才会是字长的倍数。<br /></span><img src ="http://www.cppblog.com/yuziyu/aggbug/90145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yuziyu/" target="_blank">YZY</a> 2009-07-15 16:37 <a href="http://www.cppblog.com/yuziyu/archive/2009/07/15/90145.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>