Tôi gặp một số khó khăn khi biên dịch chương trình C ++ mà tôi đã viết.
Chương trình này rất đơn giản và, theo hiểu biết tốt nhất của tôi, tuân thủ tất cả các quy tắc được quy định trong Tiêu chuẩn C ++. Tôi đã đọc toàn bộ ISO / IEC 14882: 2003 hai lần để chắc chắn.
Chương trình như sau:
Đây là đầu ra tôi nhận được khi cố gắng biên dịch chương trình này với 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
Thất vọng, tôi đã thử g ++ 4.5.2, nhưng cũng không ích lợi gì:
c:\dev>g++ helloworld.png
helloworld.png: file not recognized: File format not recognized
collect2: ld returned 1 exit status
Tôi hình dung rằng Clang (phiên bản 3.0 thân 127530) phải hoạt động, vì nó được đánh giá rất cao về sự phù hợp tiêu chuẩn của nó. Thật không may, nó thậm chí còn không cung cấp cho tôi một trong những thông báo lỗi được tô sáng và đẹp mắt:
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)
Thành thật mà nói, tôi không thực sự biết bất kỳ thông báo lỗi nào trong số này.
Nhiều chương trình C ++ khác có tệp nguồn có phần mở rộng .cpp , vì vậy tôi nghĩ có lẽ tôi cần đổi tên tệp của mình. Tôi đã đổi tên thành helloworld.cpp , nhưng điều đó không giúp được gì. Tôi nghĩ rằng Clang có một lỗi rất nghiêm trọng vì khi tôi thử sử dụng nó để biên dịch chương trình đã đổi tên, nó đã lật ra, in "84 cảnh báo và 20 lỗi được tạo." và làm cho máy tính của tôi kêu bíp rất nhiều!
Tôi đã làm gì sai ở đây? Tôi đã bỏ lỡ một số phần quan trọng của Tiêu chuẩn C ++? Hay cả ba trình biên dịch thực sự bị hỏng đến mức họ không thể biên dịch chương trình đơn giản này?