7

次のようなプリプロセッサ ディレクティブと行の両方を含むCファイルを見つけました。

# 9 "filename"

私はこれまでにそのような行を見たことがありません。彼らはどういう意味ですか?これらはプリプロセッサ ディレクティブだと思いますが、プリプロセッサはそれらをどうするのでしょうか?

また、一部の行では、文字列は既存のファイル名を表していません...

4

1 に答える 1

4

#lineプリプロセッサ ディレクティブを使用する別の方法だと思います。

たとえば、次のように記述できます。

// you could write #line 7 "filename"  or
// # 7 "filename"  or
// # 7  or
#line 7
int main(void)
{
      printf("%d\n", __LINE__);

そして、それらすべてが(この場合)10on を提供しstdoutます。

また、「ファイル名」の部分については、オプションで検証されていないことに注意してください (そのため、存在しないファイルであっても、何でもかまいません)。その使用法は、私が提供したリンクで説明されています-
If you specify a file name, the compiler views the next line as part of the specified file. If you do not specify a file name, the compiler views the next line as part of the current source file.

于 2012-11-01T15:09:27.007 に答える