このプログラムが3つのC++コンパイラによって誤って拒否されるのはなぜですか? 質問する

このプログラムが3つのC++コンパイラによって誤って拒否されるのはなぜですか? 質問する

私が書いた C++ プログラムをコンパイルする際に問題があります。

このプログラムは非常にシンプルで、私の知る限り、C++ 標準に定められたすべての規則に準拠しています。念のため、ISO/IEC 14882:2003 全体を 2 度読みました。

プログラムは以下の通りです。

ここに画像の説明を入力してください

このプログラムを Visual C++ 2010 でコンパイルしようとしたときに受け取った出力は次のとおりです。

c:\dev>cl /nologo helloworld.png
cl : Command line warning D9024 : unrecognized source file type 'helloworld.png', object file assumed
helloworld.png : fatal error LNK1107: invalid or corrupt file: cannot read at 0x5172

がっかりして、g++ 4.5.2 を試してみましたが、同様に役に立ちませんでした。

c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status

Clang (バージョン 3.0 trunk 127530) は標準準拠で非常に高く評価されているので、動作するはずだと考えました。残念ながら、強調表示された美しいエラー メッセージの 1 つも表示されませんでした。

c:\dev>clang++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
clang++: error: linker (via gcc) command failed with exit code 1 (use -v to see invocation)

正直に言うと、これらのエラーメッセージが何を意味するのか、私にはよく分かりません。

他の多くの C++ プログラムのソース ファイルは.cpp拡張子を持っているので、ファイル名を変更する必要があるかもしれないと考えました。ファイル名をhelloworld.cppに変更しましたが、効果はありませんでした。Clang には非常に深刻なバグがあると思います。名前を変更したプログラムをコンパイルしようとしたところ、プログラムがクラッシュし、「84 個の警告と 20 個のエラーが生成されました」と表示され、コンピューターがビープ音を何度も鳴らしました。

ここで何を間違えたのでしょうか? C++ 標準の重要な部分を見逃してしまったのでしょうか? それとも、3 つのコンパイラはすべて壊れていて、この単純なプログラムをコンパイルできないのでしょうか?

ベストアンサー1

おすすめ記事