关于#pragma

 多宏来控制源代码版本的时候,我们自己有可能都会忘记有没有正确的设置这些宏,此时我们可以用这条指令在编译的时候就进行检查。假设我们希望判断自己有没有在源代码的什么地方定义了_X86这个宏可以用下面的方法 
 #ifdef  _X86 
 #Pragma  message(“_X86  macro  activated!”) 
 #endif 
 当我们定义了_X86这个宏以后,应用程序在编译时就会在编译输出窗口里显示“_ 
X86  macro  activated!”。我们就不会因为不记得自己定义的一些特定的宏而抓耳挠腮了 
。 

 (2)另一个使用得比较多的pragma参数是code_seg。格式如: 
#pragma  code_seg(  ["section-name"[,"section-class"]  ]  ) 
它能够设置程序中函数代码存放的代码段,当我们开发驱动程序的时候就会使用到它。 
 
 (3)#pragma  once  (比较常用) 
只要在头文件的最开始加入这条指令就能够保证头文件被编译一次,这条指令实际上在VC6中就已经有了,但是考虑到兼容性并没有太多的使用它。 

 (4)#pragma  hdrstop表示预编译头文件到此为止,后面的头文件不进行预编译。BCB可以预编译头文件以加快链接的速度,但如果所有头文件都进行预编译又可能占太多磁盘空间,所以使用这个选项排除一些头文件。
 有时单元之间有依赖关系,比如单元A依赖单元B,所以单元B要先于单元A编译。你可以用#pragma  startup指定编译优先级,如果使用了#pragma  package(smart_init)  ,BCB就会根据优先级的大小先后编译。

 (5)#pragma  resource  "*.dfm"表示把*.dfm文件中的资源加入工程。*.dfm中包括窗体 
外观的定义。
 
 (6)#pragma  warning(  disable  :  4507  34;  once  :  4385;  error  :  164  ) 
等价于: 
#pragma  warning(disable:4507  34) //  不显示4507和34号警告信息 
#pragma  warning(once:4385) //  4385号警告信息仅报告一次 
#pragma  warning(error:164) //  把164号警告信息作为一个错误。 
同时这个pragma  warning  也支持如下格式: 
#pragma  warning(  push  [  ,n  ]  ) 
#pragma  warning(  pop  ) 
这里n代表一个警告等级(1---4)。 
#pragma  warning(  push  )保存所有警告信息的现有的警告状态。 
#pragma  warning(  push,  n)保存所有警告信息的现有的警告状态,并且把全局警告 
等级设定为n。
#pragma  warning(  pop  )向栈中弹出最后一个警告信息,在入栈和出栈之间所作的 
一切改动取消。例如: 
#pragma  warning(  push  ) 
#pragma  warning(  disable  :  4705  ) 
#pragma  warning(  disable  :  4706  ) 
#pragma  warning(  disable  :  4707  ) 
//....... 
#pragma  warning(  pop  )
在这段代码的最后,重新保存所有的警告信息(包括4705,4706和4707)。 
(7)pragma  comment(...) 
 该指令将一个注释记录放入一个对象文件或可执行文件中。 
常用的lib关键字,可以帮我们连入一个库文件。 


每个编译程序可以用#pragma指令激活或终止该编译程序支持的一些编译功能。例如,对循环优化功能: 
#pragma  loop_opt(on) //  激活 
#pragma  loop_opt(off) //  终止 
有时,程序中会有些函数会使编译器发出你熟知而想忽略的警告,如“Parameter  xxx  is  never  used  in  function  xxx”,可以这样: 
#pragma  warn  —100 //  Turn  off  the  warning  message  for  warning  #100 
int  insert_record(REC  *r) 
{  /*  function  body  */  } 
#pragma  warn  +100 //  Turn  the  warning  message  for  warning  #100  back  on 
函数会产生一条有唯一特征码100的警告信息,如此可暂时终止该警告。 
每个编译器对#pragma的实现不同,在一个编译器中有效在别的编译器中几乎无效。可从编译器的文档中查看。 


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/manplus/archive/2005/11/25/536929.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值