Ho qualche difficoltà a compilare un programma C ++ che ho scritto.
Questo programma è molto semplice e, per quanto ne so, è conforme a tutte le regole stabilite nello standard C ++. Ho letto per intero due volte la norma ISO / IEC 14882: 2003.
Il programma è il seguente:
Ecco l'output che ho ricevuto durante il tentativo di compilare questo programma con 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
Sconcertato, ho provato g ++ 4.5.2, ma è stato altrettanto inutile:
c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Ho pensato che Clang (versione 3.0 tronco 127530) dovesse funzionare, poiché è molto apprezzato per la sua conformità agli standard. Sfortunatamente, non mi ha nemmeno dato uno dei suoi bei messaggi di errore evidenziati:
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)
Ad essere sincero, non so davvero cosa significhi nessuno di questi messaggi di errore.
Molti altri programmi C ++ hanno file sorgente con estensione .cpp , quindi ho pensato che forse avrei dovuto rinominare il mio file. Ho cambiato il suo nome in helloworld.cpp , ma questo non ha aiutato. Penso che ci sia un bug molto grave in Clang perché quando ho provato a usarlo per compilare il programma rinominato, è stato lanciato, stampato "84 avvisi e 20 errori generati". e ha fatto un sacco bip del mio computer!
Cosa ho fatto di sbagliato qui? Ho perso qualche parte critica dello standard C ++? O tutti e tre i compilatori sono davvero così rotti da non poter compilare questo semplice programma?