﻿<?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++博客-Virgin·Relax</title><link>http://www.cppblog.com/relax/</link><description>不懂得正确思考将毁了我们的一生!</description><language>zh-cn</language><lastBuildDate>Wed, 08 Apr 2026 14:02:35 GMT</lastBuildDate><pubDate>Wed, 08 Apr 2026 14:02:35 GMT</pubDate><ttl>60</ttl><item><title>记下该记下的东西</title><link>http://www.cppblog.com/relax/archive/2008/07/16/56344.html</link><dc:creator>Virgin_Relax</dc:creator><author>Virgin_Relax</author><pubDate>Wed, 16 Jul 2008 14:22:00 GMT</pubDate><guid>http://www.cppblog.com/relax/archive/2008/07/16/56344.html</guid><wfw:comment>http://www.cppblog.com/relax/comments/56344.html</wfw:comment><comments>http://www.cppblog.com/relax/archive/2008/07/16/56344.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/relax/comments/commentRss/56344.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/relax/services/trackbacks/56344.html</trackback:ping><description><![CDATA[&nbsp;早就想开博客了，可是一拖再拖，也许是觉得没有什么东西值得写，但是在我印象中，好像有很多次这样的机会我都错过了，今天在公司写一个Layout文件的可视化生成工具，学到了一点早该知道的东西，索性开了这个博客，今后也会一直的写下去！<br>1.头文件到底起什么作用？<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 编译器只编译源文件(cpp)，头文件是不参与编译的，编译器编译源文件，首先展开它所include的文件所包含的代码，然后从上到下的开始编译<br>2.#pragma once的使用<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .#pragma once放到头文件的开头，这样某个include了此头文件的cpp文件，在编译器编译它时，就只会展开一次这个头文件的内容，起到防止重复包含的作用。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个怎么完成的呢，其实就是使用了宏定义，如下：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#ifndef&nbsp;&nbsp;&nbsp;A_H_H_H<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;A_H_H_H</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;A<br><img id=Codehighlighter1_44_46_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_46_Open_Text.style.display='none'; Codehighlighter1_44_46_Closed_Image.style.display='inline'; Codehighlighter1_44_46_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_44_46_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_44_46_Closed_Text.style.display='none'; Codehighlighter1_44_46_Open_Image.style.display='inline'; Codehighlighter1_44_46_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_44_46_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_44_46_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">#endif</span></div>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在这里有一点需要注意，所有标识符的定义情况只是针对本次的cpp编译来说的，也就是说每个cpp在编译<br>的开始，这些标识符都是没有定义的<br><br>3.预编译的使用<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VC中可以设置文件的预编译标志，这样其它cpp文件include了这个文件时，就不需要重新编译里面的内容，这样可以节省编译时间，对于include频繁的头文件，就可以在它的cpp文件的属性中设置Create precompile header标志(别忘了真正编译的就时它的cpp文件)，而在工程的属性中设置Use precompile header标志，这样其它include了这个文件的cpp文件就会按 预编译 的方式使用它了,另外StdAfx.cpp一般都应该设置成Create precompile header标志<br><br>好了，今天就收获了这么多！既然开了这个Blog，以后我就会接着写下去的 
<img src ="http://www.cppblog.com/relax/aggbug/56344.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/relax/" target="_blank">Virgin_Relax</a> 2008-07-16 22:22 <a href="http://www.cppblog.com/relax/archive/2008/07/16/56344.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>