c语言错误笔记

c语言错误笔记


1、error: expected ‘;’, ‘,’ or ‘)’ before ‘switch’
原因:switch 是关键字,不能被声明成一个变量
2、一个结构体变量在一个目标文件与在另外一个目标文件中的字段不同,如下图所示:
在这里插入图片描述
在这里插入图片描述
原因:修改该结构体后,一个目标文件的代码改动了会重新编译,其中结构体是更新后的;而另外一个目标文件的代码没有改动,导致该目标文件没有重新编译而里面的结构体还是旧的结构体。所以在运行时,在两个不同目标文件中其结构体的字段不同。
3、有些项目可能没有把头文件添加到Makefile的依赖关系中,所以修改了头文件后,需要把相关的目标文件删除,并重新编译。否则修改的头文件的内容不会被编译。
4、当宏定义有多行时,注意最后一行不要加续行符\ ,否则会把后边的代码加到当前宏定义中,造成编译时发生奇怪的错误。 此外,\后面紧跟换行,中间不能有其它空白字符。
5、在err标号前一定要有正常返回的流程。如下图所示,当程序正常退出时,要从err标号上面的return语句返回,否则创建的list都会被释放而变成野指针。
在这里插入图片描述
6、free指针p指向的对象后,该指针p仍然指向原来的位置,p并不为NULL。
7、warning: passing argument 4 of ‘tos_nproxy_waf_profile_create’ makes pointer from integer without a cast [enabled by default]
函数tos_nproxy_waf_profile_create的第4个参数需要指针,但传递的是int型数据。
8、 Node *root = getNode(root, prefix, 0); 该语句会先声明一个局部变量root,然后覆盖全局变量root 并作为参数传给getNode函数, 而局部变量root没有被初始化,导致getNode函数中对root的访问都是未定义的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值