D 的个人博客   Java/Go/Linux/开源

小而美的 Java 博客系统 Solo
Golang 在线 IDE Wide
黑客与画家的社区 Sym

#pragma 指示符的用法

    写的比较好,所以转过来。。。。以后忘记的话还可以复习一下,呵呵^_^!

    #pragma   指示符  
       
              嗯,今天说点什么呢?昨天的话题中说到了使用“#pragma”指示符设定连接器参数来导出函数,其实“#pragma”的功能远远不止于此,大部分我都没用过,今天就随便说说的“#pragma”指示符中我所使用过一些东东吧。  
       
              1.指示文件只包含一次  
              在头文件中,一般在整个工程中我们只要包含一次就够了,但是如果我在多个   .c/.cpp   文件中都要包含着个头文件,比如   Windows.h,那很多声明等等岂不是有两次了?解决这个问题的传统的方法是在头文件开始出用   #define   定义一个宏,比如   Windows.h   中:  
               
      #ifndef   _WINDOWS_  
      #define   _WINDOWS_  
       
              然后在文件结为加上   #endif,这样就可以避免被包含多次。但是这样的后果是代码的可读性较差   (个人观点),VC   给我们提供了另外一个途径,那就是在文件的前面加上:  
       
      #pragma   once”  
       
              是不是很方便?  
       
              2.使警告无效  
              有时候我们不得不对变量进行强制转换,由此引来编译器的一番警告,特别是   C++   中,类型检查相对于   C   更为严格。这虽然不影响什么,但是看起来多不爽——我是故意要这样的,你警告什么!:)这时候你看到警告类型,比如“warning   C4311:   “类型转换”   :   从“HHOOK”到“BOOL”的指针截断”,在前面加上:  
       
      #pragma   warning(disable:   4311)  
       
              编译器就没话说了:)。  
       
              3.指定连接要使用的库  
              比如我们连接的时候用到了   WSock32.lib,你当然可以不辞辛苦地把它加入到你的工程中。但是我觉得更方便的方法是使用   #pragma   指示符,指定要连接的库:  
       
      #pragma   comment(lib,   "WSock32.lib")  
       
              4.显示编译消息  
              没多少用处,举个例子吧:  
       
      #ifdef   _DEBUG  
      #pragma   message("编译连接为调试模式...")  
      #endif   //   _DEBUG  

     
    validate