10

何らかの理由で#include、システムに絶対パスを使用する必要があります。

使用は#include "D:\temp\temp_lib\temp.h"許容されますか?

私はこれらのさまざまな使用法を試しましたが、すべてうまくいくようです。

  1. #include "D:\temp\temp_lib\temp.h"
  2. #include "D:\\temp\\temp_lib\\temp.h"
  3. #include "D:/temp/temp_lib/temp.h"

どちらを使うべきか知りたいだけですか?私はMSVC2005を使用しています。3つすべてがLinuxまたはその他の環境で引き続き機能するかどうか疑問に思っています。

コンパイル中に#1がエラーになると予想していましたが、エラーは発生しませんでした。誰もがそれがなぜであるかについて何か考えがありますか?

4

1 に答える 1

14

私が知っているすべての実装、そして確かにMSVC 2005とLinuxでは、ヘッダーファイルを見つけるディレクトリパスを指定できます。ディレクトリパスのリストにD:\ temp \ temp_libを含めてから、

#include <temp.h>

gccの場合は、-Ipathを使用します。MSVCについては、「VisualStudioはC++ヘッダーファイルをどこで検索しますか?」を参照してください。

#1が構文エラーではない理由は、文字列リテラルのように見えますが、そうではないためです。仕様は

#include "q-char-sequence"

q-charは

改行文字と"を除くソース文字セットのすべてのメンバー

特に、\特別な意味はありません。q-char-sequenceの解釈は、実装によって定義されます。

于 2012-09-24T10:21:05.027 に答える