Cヘッダファイル「stdio.h」を見つけます。

Cヘッダファイル「stdio.h」を見つけます。

私は一般的な「hello world」プログラムである最初のCプログラムを書きました。stdio.h私のシステムでファイルが見つかる場所を教えてくれる人はいますか?これは言語を理解するのに非常に役立ちます。

答え1

元の質問で使用していたUbuntuには「root」stdio.hファイルがあります/usr/include。他のシステムは異なる場所にあり、すべての場合に異なるstdio.hファイルが導入される可能性があります。

読んでみるともっと役に立つと思います。POSIX仕様stdio.hをクリックし、システムがどのように実装するかを確認します。 Linuxでは、man 3 stdio便利な要約も提供されます。他のシステムにも同様の文書があります。

答え2

システムによって異なります(ご注意ください)POSIXヘッダファイルの場所は指定されず、C標準も同様です。慣例上で見つけることができます/usr/include。しかし、いくつかのシステムでは(持つディレクトリ/usr/include)がそこに見つからない可能性があります。

たとえば、最近(ここ数年)、macOS SDKはSDKの下のディレクトリにそれを配置しました(Visual Studioと同様に...)。私のコンピュータの1つでそれを見つけると、stdio.h次のリストが表示されます。

/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/SDKs/AppleTVSimulator.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/DriverKit19.0.sdk/System/DriverKit/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/WatchOS.platform/Developer/SDKs/WatchOS.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/SDKs/WatchSimulator.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/stdio.h
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/include/sys/stdio.h
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/stdio.h
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/stdio.h
/Library/Developer/CommandLineTools/usr/include/c++/v1/stdio.h
/opt/local/include/gcc/c++/tr1/stdio.h
/opt/local/include/gcc8/c++/tr1/stdio.h
/opt/local/include/gcc9/c++/tr1/stdio.h
/opt/local/include/isc/stdio.h
/opt/local/lib/gcc8/gcc/x86_64-apple-darwin18/8.3.0/include/ssp/stdio.h
/opt/local/lib/gcc8/gcc/x86_64-apple-darwin18/8.3.0/include-fixed/stdio.h
/opt/local/lib/gcc9/gcc/x86_64-apple-darwin18/9.2.0/include/ssp/stdio.h
/opt/local/lib/gcc9/gcc/x86_64-apple-darwin18/9.2.0/include-fixed/stdio.h
/opt/local/libexec/llvm-9.0/include/c++/v1/stdio.h
/opt/local/libexec/llvm-9.0/lib/c++/v1/stdio.h

以下のファイルは/optMacPort(サードパーティ)用です。

ファイルがあっても存在する /usr/include、ほとんどのコンテンツ(実装の詳細)は他のファイルにあります。内部詳細は、/usr/include(Solaris)のサブディレクトリにある場合とそうでない場合があります(通常はそうではありません)。繰り返しますが、macOSは1つの例ですが、他の例もあります。関連するシステムに関する詳細な情報がなければ、誰も詳細な答えを与えることはできません。

通常、(常にそうではない)、コンパイラと関連するCプリプロセッサが使用されている実際のファイルを見つけるのに役立ちます。ドキュメントを確認する必要がありますが、これはmacOSのhello-worldプログラムで動作します。

/usr/bin/clang -E hello.c >hello.log

(答えが長すぎます。)次のように始めてください。

#1「こんにちは。c」
#1""1
#1""3
366話 3
#1""1
#1""2
#1「Hello.c」2
#1 "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/stdio.h" 1 3 4
# 64 "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/stdio.h" 3 4
#1 "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/_stdio.h" 1 3 4
#68 "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/_stdio.h" 3 4
#1 "/Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk/usr/include/sys/cdefs.h" 1 3 4
...

関連情報