﻿<?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++博客-珍贵岁月里  寻觅我心中的诗-随笔分类-c/c++</title><link>http://www.cppblog.com/efolzl/category/11939.html</link><description /><language>zh-cn</language><lastBuildDate>Tue, 29 Sep 2009 02:52:51 GMT</lastBuildDate><pubDate>Tue, 29 Sep 2009 02:52:51 GMT</pubDate><ttl>60</ttl><item><title>每天一点c/c++ --20090928</title><link>http://www.cppblog.com/efolzl/archive/2009/09/28/97469.html</link><dc:creator>efolzl</dc:creator><author>efolzl</author><pubDate>Mon, 28 Sep 2009 14:22:00 GMT</pubDate><guid>http://www.cppblog.com/efolzl/archive/2009/09/28/97469.html</guid><wfw:comment>http://www.cppblog.com/efolzl/comments/97469.html</wfw:comment><comments>http://www.cppblog.com/efolzl/archive/2009/09/28/97469.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/efolzl/comments/commentRss/97469.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/efolzl/services/trackbacks/97469.html</trackback:ping><description><![CDATA[1.关于main()函数<br>main函数的标准写法：<br><br>c:<br>int main(void)<br>int main(int argc, char *argv[])<br><br>c++:<br>int main()<br>int main(int argc, char *argv[])<br><br>不要使用void main()，它是不标准的，在有些编译器编译时会出错。<br>强烈建议为main函数定义返回值，以提供给它的激发程序，说明运行状态。按照<span>新的C99标准，即使函数本身没有定义返回值，编译器也会加上。<br><br>2.#include机制小探<br>编译器通过预处理命令#include包含一个文件，包含的文件没有限制，可以为.h文件，.cpp文件，甚至是自己定义的文件，只要文件包含的源码符合编译规定即可。<br>一般情况下，使用#include包含头文件，头文件内容为变量及类的声明。<br>可以通过一些非常规的用法来了解编译器的#include机制，会发现其仅仅是&#8220;替换&#8221;而已，正如include的含义。<br><br>例如，创建一个test.h文件，内容如下：<br><br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "test #include" &lt;&lt; std::endl;<br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br><br>创建一个test.cpp文件，内容如下：<br>#include &lt;iostream&gt;<br>#include "test.h"<br><br>在命令行下运行 cl test.cpp，编译成功，生成exe文件。<br>在命令行下运行 cl /P test.cpp，将得到预编译后的文件test.i，其内容如下：<br><br>#line 1 "E:\\Code\\testcode\\test\\test.cpp"<br>#line 1 "C:\\Program Files\\Microsoft Visual Studio\\VC98\\include\\iostream"<br><br>#pragma once<br>#line 6 "C:\\Program Files\\Microsoft Visual Studio\\VC98\\include\\iostream"<br>......<br>......<br>#line 2 "E:\\Code\\testcode\\test\\test.cpp"<br>#line 1 "E:\\Code\\testcode\\test\\test.h"<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; std::cout &lt;&lt; "test #include" &lt;&lt; std::endl;<br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br>#line 3 "E:\\Code\\testcode\\test\\test.cpp"<br><br>分析上述内容可知，#include本质就是完成文件替换，同时插入一些编译指令来帮助完成编译，例如，<br></span><span>#pragma once</span>保证文件在物理上被包含一次。<br><span>#line 2 "E:\\Code\\testcode\\test\\test.cpp" 修改当前的行号和文件名，以保证编译出错或告警时打印出正确的信息。</span><br><span><br></span>   <img src ="http://www.cppblog.com/efolzl/aggbug/97469.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/efolzl/" target="_blank">efolzl</a> 2009-09-28 22:22 <a href="http://www.cppblog.com/efolzl/archive/2009/09/28/97469.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>