我在编译我写的c++程序时遇到了一些困难。

这个程序非常简单,据我所知,它符合c++标准中规定的所有规则。我已经把ISO/IEC 14882:2003通读了两遍。

程序如下:

下面是我在尝试用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

沮丧地,我尝试了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版本trunk 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)

老实说,我真的不知道这些错误消息是什么意思。

许多其他c++程序都有扩展名为.cpp的源文件,所以我想可能需要重命名我的文件。我把它的名字改为helloworld.cpp,但这并没有帮助。我认为Clang有一个非常严重的错误,因为当我试图用它来编译重命名的程序时,它跳出来,打印出“84个警告和20个错误生成”,让我的计算机发出很多哔哔声!

我哪里做错了?我是否错过了c++标准的某些关键部分?或者这三个编译器真的坏到不能编译这个简单的程序?


当前回答

似乎你的编译器不支持这样的文件嗯…编码。试着把它转换成ASCII。

其他回答

你是手写程序然后扫描到电脑里的吗?这就是“helloworld.png”所暗示的内容。如果是这种情况,您需要注意c++标准(即使在其最新版本中)不需要光学字符识别,不幸的是,当前任何编译器都不包含光学字符识别作为可选特性。

您可能需要考虑将图形转换为文本格式。任何纯文本编辑器都可以使用;使用文字处理器,虽然能够生成漂亮的打印输出,但很可能会导致您在尝试扫描时遇到的相同错误。

如果你真的有冒险精神,你可以尝试把你的代码写进文字处理器。打印出来,最好使用像cra这样的字体。然后,把打印出来的文件扫描回来。然后,扫描可以通过第三方OCR包运行,以生成文本表单。然后可以使用许多标准编译器之一来编译文本表单。

但是,要注意在调试阶段会产生大量的纸张成本。

您需要指定输出的精度,在最后一个右大括号之前紧接着使用冒号。由于输出不是数字,精度为零,所以需要这个-

:0}

你忘记使用Comic Sans字体,这就是它出错的原因。

我发现不用神奇的记号笔在显示器的玻璃上写代码很有帮助,尽管当它真的是黑色的时候看起来很漂亮。屏幕很快就满了,然后给我一个干净显示器的人每周都骂我。

我的几个员工(我是经理)出钱给我买了一台带旋钮的红色平板电脑。他们说我不需要记号笔,屏幕满了我可以自己清理,但我得小心摇晃。我想那是很微妙的。

这就是我雇佣聪明人的原因。

无法识别文件格式您需要正确格式化您的文件。这意味着为代码使用正确的颜色和字体。查看每个编译器的具体文档,因为这些颜色在不同的编译器之间有所不同;)