У меня возникли трудности с компиляцией написанной мной программы на С++.
Эта программа очень проста и, насколько мне известно, соответствует всем правилам, изложенным в стандарте С++. Я читал по всему ISO/IEC 14882: 2003 дважды, чтобы быть уверенным.
Программа выглядит следующим образом:
Вот результат, который я получил при попытке скомпилировать эту программу с Visual С++ 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 багажник 127530) должен работать, поскольку он настолько высоко оценен за соответствие стандартов. К сожалению, он даже не дал мне одного из красиво выделенных сообщений об ошибках:
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)
Честно говоря, я не знаю, что означает какое-либо из этих сообщений об ошибках.
У многих других программ на С++ есть исходные файлы с расширением .cpp, поэтому я подумал, что мне нужно переименовать мой файл. Я изменил его имя на helloworld.cpp, но это не помогло. Я думаю, что в Clang есть очень серьезная ошибка, потому что, когда я пытался использовать ее для компиляции переименованной программы, она перевернулась, напечатала "84 предупреждения и 20 возникших ошибок". и много сделал мой компьютер!
Что я сделал здесь неправильно? Я пропустил какую-то критическую часть стандарта С++? Или все три компилятора действительно настолько разбиты, что не могут скомпилировать эту простую программу?