#include“windows.h”它是如何工作的

时间:2013-12-02 17:14:37

标签: c windows header header-files

当我以下列方式在c程序中包含“windows.h”时

#include "windows.h"

它编译得很好。根据我的知识,如果我们包含带有“”的头文件,编译器将在当前目录中搜索头文件。那么我的程序如何在没有头文件的情况下编译呢?

1 个答案:

答案 0 :(得分:4)

引用形式#include的处理是实现定义的。标准(ISO / IEC 9899:201x,6.10.2.3)说明了我的重点:

  

表单

的预处理指令
# include "q-char-sequence" new-line
     

导致该指令的全部内容被替换   源文件由“...之间的指定序列标识”   分隔符。在一个中搜索指定的源文件   实施定义的方式。如果不支持此搜索,或者如果   搜索失败,指令被重新处理,就像它读取

一样
# include <h-char-sequence> new-line
     

包含相同的序列(包括&gt;字符,如果有的话)   来自原始指令。

所以要回答这个问题,你需要参考编译器的文档。

为了论证和说明,我们假设您使用MS编译器,因为您没有指定您使用的编译器。对于引用形式的#include

,MS编译器的documentation表示
  

预处理器按以下顺序搜索包含文件:

     
      
  1. 与包含#include语句的文件位于同一目录中。
  2.   
  3. 在任何先前打开的包含文件的目录中,按照与打开它们相反的顺序。搜索从   最后打开并继续的包含文件的目录   通过首先打开的包含文件的目录。
  4.   
  5. 沿着每个/ I编译器选项指定的路径。
  6.   
  7. 沿着INCLUDE环境变量指定的路径。
  8.   

如果您使用的是其他编译器,则需要参考编译器的文档。