J'ai de la difficulté à compiler un programme C ++ que j'ai écrit.
Ce programme est très simple et, à ma connaissance, est conforme à toutes les règles énoncées dans la norme C ++. J'ai lu l'intégralité de l'ISO / IEC 14882: 2003 deux fois pour être sûr.
Le programme est le suivant:
Voici la sortie que j'ai reçue en essayant de compiler ce programme avec 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
Consterné, j'ai essayé g ++ 4.5.2, mais c'était tout aussi inutile:
c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
J'ai pensé que Clang (version 3.0 trunk 127530) devait fonctionner, car il était très apprécié pour sa conformité aux normes. Malheureusement, il ne m'a même pas donné l'un de ses jolis messages d'erreur mis en évidence:
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)
Pour être honnête, je ne sais pas vraiment ce que signifient ces messages d'erreur.
De nombreux autres programmes C ++ ont des fichiers source avec une extension .cpp , donc j'ai pensé que j'avais peut-être besoin de renommer mon fichier. J'ai changé son nom en helloworld.cpp , mais cela n'a pas aidé. Je pense qu'il y a un bogue très grave dans Clang parce que lorsque j'ai essayé de l'utiliser pour compiler le programme renommé, il s'est retourné, imprimé "84 avertissements et 20 erreurs générées". et fait beaucoup biper mon ordinateur!
Qu'est-ce que j'ai fait de mal ici? Ai-je manqué une partie critique de la norme C ++? Ou les trois compilateurs sont-ils vraiment tellement cassés qu'ils ne peuvent pas compiler ce programme simple?