include “file.h” vs what is the difference?

2019-02-22 11:16发布

I'm working in Visual studio 2010. I Added a directory to Project Properties -> Linker -> General -> Additional Directories

The project compiles if I use

 "file.h"

but not if i use

 <file>

3条回答
手持菜刀,她持情操
2楼-- · 2019-02-22 11:51

"" is for local files and <> are from files in the C library.

查看更多
我欲成王,谁敢阻挡
3楼-- · 2019-02-22 11:57

You are probably assuming that < > implicitly adds .h to the end of the file name. This is not true. Whether you use < > or " " has no significance on the name of the file. It basically tells the implementation in which order it should traverse include directories to find the header file.

To quote the standard:

A preprocessing directive of the form
# include <h-char-sequence> new-line
searches a sequence of implementation-defined places for a header identified uniquely by the specified sequence between the < and > delimiters, and causes the replacement of that directive by the entire contents of the header. How the places are specified or the header identified is implementation-defined.

A preprocessing directive of the form
# include "q-char-sequence" new-line
causes the replacement of that directive by the entire contents of the source file identified by the specified sequence between the " delimiters. The named source file is searched for in an implementation-defined manner. If this search is not supported, or if the search fails, the directive is reprocessed as if it read

# include <h-char-sequence> new-line
with the identical contained sequence (including > characters, if any) from the original directive

查看更多
我欲成王,谁敢阻挡
4楼-- · 2019-02-22 12:00

An include works only if there is exists such a file. In your case it might be cause there is a file file.h but note simply file.

You probably think it should work everywhere as you might have seen it with iostream.h and iostream. This is because they are two different files which mean two different things.

查看更多
登录 后发表回答