前两天使用BCB进行Winsdk的编程中,死活无法加载资源文件(*.res),写出的RC文件没有问题,用Brcc32也可以生成资源文件,但是就是无法和程序源代码进行链接起来(如果用IDE就好办多了,但无奈现在用的是命令行编译),百思不得其解,到晚上发帖无数,结果还是没有搞定。
后来无奈用google,发现好似可以用#pragma编译指令来控制,在CSDN的一些文章中找到了答案,也发现了一些相关的其他技巧,写下来要记牢。
#pragma 的用法
这是一个编译控制指令,可以在编译时动态地调整编译选项,这种指令在不同的编译系统中是不同的。
#pragma warning(disable 4068)的意思是不显示4068号警告信息,如果编译时总是出现4068号警告,而认为肯定不会有错误,可以使用这条指令。这条指令C++ Builder和VC++都支持。
如果你没有在函数内部使用某个参数,编译时会报告"Parameter name is never used in function func-name",使用#pragma argsused,编译时就不再警告了。VC++不支持这条指令。
在C++ Builder和VC++的帮助中所有#pragma的详细说明。
#pragma hdrstop表示预编译头文件到此为止,后面的头文件不进行预编译。BCB可以预编译头文件以加快链接的速度,但如果所有头文件都进行预编译又可能占太多磁盘空间,所以使用这个选项排除一些头文件。
有时单元之间有依赖关系,比如单元A依赖单元B,所以单元B要先于单元A编译。你可以用#pragma startup指定编译优先级,如果使用了#pragma package(smart_init) ,BCB就会根据优先级的大小先后编译。
#pragma resource "*.dfm"表示把*.dfm文件中的资源加入工程。*.dfm中包括窗体外观的定义。
在使用#pragma的时候要注意和头文件的相互位置,在C++Builder中,焦点放在#pragma字段上,按F1可以获得更多更详细的用法介绍说明。