gcc プリプロセッサ出力で、'# 1 "ac"' のようなハッシュ記号と数字で始まる行の意味は何ですか? 質問する

gcc プリプロセッサ出力で、'# 1

Cプリプロセッサの出力を次のように出力します。

gcc -E a.c

出力には次のような行が多数含まれます

# 1 "a.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "a.c"
# 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 1 3
# 19 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 3
# 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 1 3
# 31 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3
       
# 32 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3
# 20 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 2 3

C でこのような構文を見たことはありません。これが何をするのか説明してくれる人はいますか?

ベストアンサー1

これらの行はデバッグのヒントです(行に続くコードが実際にどこから来たのか)

# line-number "source-file" [flags]

フラグの意味(スペース区切り):

  • 1 - 新しいファイルの開始
  • 2 - 前のファイルに戻る
  • 3 - 次のテキストはシステム ヘッダー ファイルから取得されます (#include <> と #include "")
  • 4 - 次のテキストは、暗黙的な extern "C" ブロックで囲まれているものとして扱われる必要があります。

おすすめ記事