解哗含樱析:
#pragma hdrstop表示预编译头文件到此为乱丛止,后面的头文件不进行预编译。可以预编译头文件以加快链接的速度,但如果所有头文件都进行预编译又可能占太多磁盘空间,所以使用这个选项排除一些头文件。
有时单元之间有依赖关系,比如单元A依赖单元B,所以单元B要先于单元A编译。你可以用#pragma startup指定编译优先级,如果使用了#pragma package( *** art_init) ,就会根据优先级的大小先后编译。
1.#pragma
once
保证头文件只被include一次,等同于
#ifndef
_X_H
#define
_X_H
...
#endif
//_X_H
2.#pragma
comment
原形是#pragma
comment(
"乎信comment-type"
[,
commentstring]
),把comment
recode放入目标文件或可
执行文件。"comment-type"有五种,其中lib比较常用:#pragma
comment(lib,"d3d9x")
在连接时就会把
d3d9x.lib报含到项目中来。其实在IDE中也可以手动的设置把lib文件包含进来。
3.#pragma
warning
可以对编译的warning做一些处理.
比如当把float
转成
int时会有一个warning.看到warning总归不爽,而且有些warning心知肚明,肯定不
会引起什么问题,这时候:
#pragma
warning(disable:4244)
可以把该警告屏蔽掉.#pragma
warning的作用域是本文件,如果是头文件,则会影响到包含它的模块,确保
你的使用不会影响到别人.所以最好及时地恢复warning
#pragma
warning(
push
)
#pragma
warning(
disable
:
4705
)
#pragma
warning(
disable
:
4706
)
//
Some
code
#pragma
warning(
pop
)
也可以
#pragma
warning(
disable
:
4705
)
#pragma
warning(
disable
:
4706
)
//
Some
code
#pragma
warning(
default:
4705
)
#pragma
warning(
default:
4705
)
4.#pragma
pack
c/c++的class,struct,union默认情况下会在字,双字,四字边界对齐.有时候需要按我们的方式进行对齐,
比如让网络包颤顷和更紧蹙些.
#pragma
pack(push,1)
struct
A{
//现在sizeof(A)
等茄盯于5;默认情况下是8;
int
i
char
c
}
#pragma
pack(pop)
使用时跟warning一样,也要注意作用域问题。记得以前有位仁兄在头文件中改了对
齐方式,没有及时地设回去。这种bug很讨厌,会间歇性地莫名其妙地引起程序崩溃,千万要小心。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)