次のコードがあります。
#include <stdio.h>
int main()
{
printf ("hello world\n");
return 0;
}
Windows 7 x86 で MSVC++ 10.0 を使用して、次のようにコマンド ラインでコンパイルします。
cl.exe simple.cpp
これにより simple.exe が生成され (コンパイラは自動的にリンカーを呼び出します)、実行可能ファイルは期待どおりに "hello world" メッセージを表示します。depends.exe を使用して実行可能ファイルを調べると、kernel32.dll が唯一の依存関係として表示されます。kernel32.dll ライブラリのコンテンツをダンプすると、printf が表示されません。
VC++ はある種の最適化を採用しているので、printf は最終的な実行可能ファイルに何らかの方法で直接含まれていますか? もしそうなら、どのように、そしてそれはどこかに文書化されていますか?