nulltorpedo
nulltorpedo

Reputation: 1205

include "file.h" vs <file> what is the difference?

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>

Upvotes: 4

Views: 5815

Answers (3)

Mehrdad Afshari
Mehrdad Afshari

Reputation: 421978

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

Upvotes: 10

parapura rajkumar
parapura rajkumar

Reputation: 24403

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.

Upvotes: 1

Dieter De Mesmaeker
Dieter De Mesmaeker

Reputation: 2156

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

Upvotes: 5

Related Questions