今天写了一段比较简单的C语言程序,但是在编译的时候却遇到了一个不怎么常见的错误,特此做一个简单的总结。
我采用gcc编译的过程中出现了如下的一些错误:
[gong@Gong-Computer hashmap]$ gcc -g testlist.c list.c -o testlist
In file included from testlist.c:3:0:
list.h:28:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘create_list’
list.h:29:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘insert_listnode’
list.h:30:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘delete_listnode’
In file included from list.c:4:0:
list.h:28:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘create_list’
list.h:29:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘insert_listnode’
list.h:30:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘delete_listnode’
list.c:6:13: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘create_listnode’
list.c:19:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘create_list’
list.c:33:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘insert_listnode’
list.c:76:6: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘delete_listnode’
这种错误在我前面写代码的时候很少看见,我也不知道是怎么了,然后我又采用g++的编译器进行了一次编译,竟然通过了。所以我觉得肯定是编译器存在问题。
这个让我有些不知所措,通过查找网页,发现了这个问题出现的原因。
出现这种错误是因为bool类型错误,因为我在程序中返回了false,true以及bool类型,但是在C语言中是不存在布尔类型的数据的,这就是出现错误的原因。
找到的原因通过宏定义即可解决上面出现的问题:
#define bool int
#define true 1
#define false 0
添加好这几个宏定义以后,编译器竟然没有问题了。
阅读(955) | 评论(0) | 转发(0) |