Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

#include absolute path syntax in c/c++

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.

  1. #include "D:\temp\temp_lib\temp.h"
  2. #include "D:\\temp\\temp_lib\\temp.h"
  3. #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?

like image 265
chris yo Avatar asked Sep 24 '12 10:09

chris yo


1 Answers

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.

like image 173
Jim Balter Avatar answered Oct 20 '22 00:10

Jim Balter