Yazdığım bir C ++ programını derlemekte zorlanıyorum.
Bu program çok basit ve bildiğim kadarıyla C ++ Standardında belirtilen tüm kurallara uyuyor. Emin olmak için ISO / IEC 14882: 2003'ün tamamını okudum.
Program aşağıdaki gibidir:
Visual C ++ 2010 ile bu programı derlemeye çalışırken aldığım çıktı:
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
Dezavantajlı, g ++ 4.5.2 denedim, ama aynı derecede yararsızdır:
c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Clang'ın (sürüm 3.0 trunk 127530) çalışması gerektiğini düşündüm, çünkü standartlara uygunluğu için çok övgü aldı. Ne yazık ki, bana güzel, vurgulanan hata mesajlarından birini bile vermedi:
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)
Dürüst olmak gerekirse, bu hata mesajlarından herhangi birinin ne anlama geldiğini gerçekten bilmiyorum.
Diğer birçok C ++ programı .cpp uzantılı kaynak dosyalara sahiptir , bu yüzden belki de dosyamı yeniden adlandırmam gerektiğini düşündüm. Adını helloworld.cpp olarak değiştirdim , ancak bu yardımcı olmadı. Clang'da çok ciddi bir hata olduğunu düşünüyorum çünkü yeniden adlandırılan programı derlemek için kullanmaya çalıştığımda, ters çevirdi, "84 uyarı ve 20 hata üretildi" yazdırdı. ve bilgisayarımı çok fazla bip sesi çıkardı!
Burada neyi yanlış yaptım? C ++ Standardının bazı kritik kısımlarını kaçırdım mı? Yoksa her üç derleyici de bu kadar basit bir programı derleyemeyecek kadar kırılmış mı?