如何快速查找c语言编译时的错
代码是否存在逻辑错误:
1、变量使用前未被数值
实例:
int main()
{
int x=5,y,z;
z=x*y;
printf("%d",z);
return 0;
}
在此程序中变量y在使用之前未被赋值,所以结果输出z的值就会是系统随机分配一个值给y再加乘以x的值。
2、把赋值赋值符号“=”与等于符号“==”相混淆
实例:
有一下语句:
if(a=5)
{
printf("a等于5");
}
输出的结果永远都是“a等于5”,原因是在执行if(a=5)之时,无论a之前是什么值,此时都会被重新赋值为5,而不是把a的值与5相比较,而正确的表示比较的表示为:
if(a==5)
{
printf("a等于5");
}
(1)如何快速查找c语言编译时的错扩展阅读
C语言编程注意事项:
1、书写标识符时,忽略了大小写字母的区别。
2、将字符常量与字符串常量混淆。
3、忽略了变量的类型,进行了不合法的运算。
4、忽略了“=”与“==”的区别。
5、忘记加分号。
6、多加分号。
7、输入变量时忘记加地址运算符“&”。
B. gcc编译器几乎很难发现c语言中的语法错误吗
1、使用gcc命令编译c++程序遇到错误。
需要明确的是,gcc是可以编译c++程序的。gcc,原名GNU C Compiler,最初是C语言的编译器,但经过发展之后,它变成了一个可以支持C++、Fortran、Pascal、Objective-C、Java、Ada,以及Go与其他语言编译的编译器套件,其名称也因此改为了GNU Compiler Collection。g++便是其中的一部分,用于处理c++语言。虽然大多数情况下,我们直接使用g++命令来编译c++程序,但直接使用gcc命令也可以编译c++程序的,当然前提是安装了g++(gcc-c++)模块。gcc命令会根据源程序的后缀名来决定实际使用的编译器,编译过程与直接使用g++完全一样,但是,链接过程有点不同。g++命令会自动给你加上c++标准库的链接,但gcc命令却不会给你自动加上,因些需要手动加上。例如如下的程序:
#include <iostream>
int main()
{
std::cout << "Hello World!" << std::endl;
return 0;
}
使用gcc命令编译会报undefined reference的错误,使用g++命令就不会,但是使用gcc命令加上stdc++的链接库就可以成功编译。所以,如果是编译c++程序,最好还是使用g++命令编译吧。
2、undefined reference to XXX的问题
这个问题应该说是非常常见的一个问题了,通常情况下,这个问题是由于你使用了第三方的库文件,却没有加上相应的库的链接,导致编译器找不到符号。这种情况也比较好解决,只要加上链接库就可以了,具体命令有两种写法,一是使用-L和-l参数指定库的路径和库名,其中,库的文件名必须为libxxx.so或者libxxx.a的形式,其中的xxx就是库名,跟在-l参数后面;第二种是直接写上库的文件名(相对路径、绝对路径都可以),这种写些就是直接当这个库文件是一个.o文件(目标文件)进行链接。
不过有时候,明明已经写上了链接库,可还是会有undefined reference的错误,这个候,可能就是链接顺序的问题了。同样是上述简单的hello.cpp,我们使用gcc命令编译(不用g++命令是因为它自动加了stdc++的链接库,我们不好改顺序)
可以看到,虽然加上了-lstdc++,但还是有undefined reference的错误。这是因为链接器在进行链接的时候,是从前往后找符号的。由于libstdc++.so库中的的符号(std::cout,std::endl)是在hello.o(由hello.cpp编译而来)中使用的,因此,当链接器从左至右抛描库文件时,第一个碰到了stdc++库,发现并没有使用这个库中的符号,于是就将这个库给丢弃不用了,继续往后链接hello.o的时候,发现了其中要使用一些符号,而这些符号是stdc++中的,而stdc++库已经被链接器给扔了,所以就找不着了,就有了undefined reference。解决的方案也是两个:一是按引用顺序写链接的目标文件的顺序,如果是编译可执行程序,就从包含main函数的.o文件开始写,最基础的库写在最右边;二是加上-Wl,--as-needed参数,这个参数会将库文件中加入NEED标识,而不管这个库文件有没有用到(也就是告诉链接器,那个暂时没用到的库先别扔了)。但是第二种方法好像对stdc++这个库没什么作用,其他的第三方库可以,具体原因是什么还不太清楚,所以,最好写编译选项的时候,库文件还是按引用顺序写吧。
C. c语言编译出错,怎么查找错误出在哪行
步骤:
1.打开源代码文件,在控制台里查看错误类型。
D. c璇瑷缂栫▼杞浠跺嚭鐜癳rror 镐庝箞鐢ㄥ揩鎹烽敭镆ユ垒鍒伴敊璇鍦ㄥ摢涓琛 鎴戣板缑鏄疐鍑犳潵镌
F4阌栾镆ユ垒
F7缂栬疟鏁翠釜椤圭洰
ctrl+F7缂栬疟褰揿墠婧愭枃浠
Ctrl+F5闱炶皟璇曡繍琛岀洿鎺ョ敓鎴恊xe鏂囦欢
shift+F5缁撴潫杩愯
F9璁炬柇镣
F10鍗曟ヨ皟璇曪纴鍙鍦╩ain鍑芥暟涓杩涜
F11杩涘叆鍑芥暟浣揿唴閮
shift+F11杩愯岃呖褰揿墠鍑芥暟浣揿
shift+绠澶撮変腑鏂囨湰
Alt+F8鏁寸悊阃変腑浠g爜
Alt+0 鏄剧ずWorkspace宸ヤ綔鍖虹獥鍙
Alt+2鏄剧ず杈揿嚭绐楀彛
Alt+3鏄剧ず鍙橀噺瑙傚疗绐楀彛
Alt+4鏄剧ず鍙橀噺镊锷ㄦ煡鐪嬬獥鍙
Alt+5鏄剧ず瀵勫瓨鍣ㄦ煡鐪嬬獥鍙
Alt+6鏄剧ず鍐呭瓨镆ョ湅绐楀彛
Alt+7鏄剧ず鍫嗘爤绐楀彛
Alt+8鏄剧ず姹囩紪绐楀彛
E. c语言编程怎么测试程序的对错
自己好好看看程序吧,别依靠编译器,编译器不是万能的!
1.语法错误
在编译前浏览程序的源代码看看是否有明显的错误。
可以查看由编译器发现的错误。
发现错误——从第一个开始修改,每次修改1~2个,然后重现编译。
发现的错误位置可能比真正的错误要滞后一行。
2.语义错误
比较程序实际得到的结果和预期结果。
跟踪程序,执行步骤——可用EXCEL(语句行×变量值)
在程序的几个关键点处加入额外的printf()语句以监视所选变量的值。
或用调试器。
F. 用什么软件进行C语言编程可以检测错误的内容
不建议依赖工具
出现编写错误往往是由于粗心或者是没有养成良好的编程习惯造成的
对于初学来说 正是养成习惯的关键时期 这段时间内不建议使用任何的辅助软件 比如补齐或者提示功能
同时 通过编译出错来定位解决编译错误也是一个很好的锻炼基本技能的机会
等到你因为拼写导致的编译错误很少见时 再考虑使用这类软件 来提供你编程的效率