Reputation: 1277
For some reason, I need to use the absolute path in #include
for my system.
Is using #include "D:\temp\temp_lib\temp.h"
acceptable?
I have tried these different usage and it all seems to work.
#include "D:\temp\temp_lib\temp.h"
#include "D:\\temp\\temp_lib\\temp.h"
#include "D:/temp/temp_lib/temp.h"
I just want to know which one should I use? I am using MSVC 2005. I'm wondering if all three will still work in Linux or other environment.
I was expecting #1 to be an error during compilation, but I did not get any. Anyone has any idea why that is?
Upvotes: 10
Views: 23057
Reputation: 16406
Every implementation I'm aware of, and certainly MSVC 2005 and linux, allows you to specify the directory paths in which to find header files. You should include D:\temp\temp_lib on the list of directory paths, and then use
#include <temp.h>
For gcc, use -I path. For MSVC, see Where does Visual Studio look for C++ header files?
The reason that #1 isn't a syntax error is that, although it looks like a string literal, it isn't. The specification is
#include "q-char-sequence"
Where q-char is
any member of the source character set except the new-line character and "
In particular, \
has no special meaning. The interpretation of the q-char-sequence is implementation-defined.
Upvotes: 14