以前入门学习用的基本是codeblocks,DEVC++之类的编译器,感觉没有太大阻碍,但最近使用VC 2010 或者VS,在纯C语言编译下执行时,总是会出现,这样那样满脸问号???的错误,警告。
哪怕是这样一个小学生都能看懂的程序temp1.c,也不给通过!!!。
#include <stdio.h> //temp1.c
int main()
{
printf("Hello, World!");
return 0;
}
这么个程序,5个错误!我承认我很久没敲了,但也不至于连’;’ 分号都不加吧?仔细一看,没错啊,确实没语法错误。是不是编译器出毛病了???
但后来才发现,在当前窗口打开了多个项目的情况下,VC编译器会默认挨个把这几个项目都执行编译一遍,也就是说,上面那个简单的要命的temp1并没有问题,而是当前窗口的其他C文件出错了。
如图,我这创建了3个项目temp1、temp2、temp3,分别对应3个C语言.c文件。窗口1----temp1.c确实没问题,那编译时为何出现2种错误各出现了两次?
没错,我只编译temp1项目,但VC把temp1~temp3都挨个编译了一遍,也就是说,这两种错误是由于temp2.c,temp3.c窗口是空的,因而出现了两种错误各出现两遍,即4个错误(2种错误)。
往下看,我把程序粘到temp2.c窗口中,再编译一下:
此时,虽然我还是编译的temp1.c,但很明显另外两个也被编译了。但这两个错误是由于temp3.c为空造成的。接着如果我把第三个也粘上程序,你应该能猜到结果了------0 erros
完全正确!
同理,假设我手欠,temp2.c中漏了个分号;目的是让当前打开的其他项目c文件出错,这时编译temp1.c同样会报错。
但我们要知道的是,这是其他工程文件出错导致的,并不是因为temp1.c写错了,别再傻乎乎盯着正确程序找错误了,给你一天你也照不出来哪错了,因为根本就没错!
因为错误是由其他项目引起的,不管错误直接运行temp1,可以得出正确结果。
综上,当遇到这几种错误,特别是写几十,上百行的程序时,先把最基础的非主观问题排除,然后再去程序中找bug,可能会让你少受些苦。
error LNK1120: 1 个无法解析的外部命令
error C2143: 语法错误 : 缺少“;”(在“}”的前面
error LNK2019: 无法解析的外部符号 _main,该符号在函数
___tmainCRTStartup 中被引用
写的匆忙,若有理解不当之处,还望指正,共同进步!