最近在VS2005中写C程序,保存的当然是.c文件。出现一些错误,自己百度找到原因了。
比如下面程序
<pre name="code" class="cpp">#inlcude <stdio.h>
struct myArr
{
int *pBase;
int len;
int cnt;
};
bool is_empty(struct myArr *pArr);
int main(void)
{
int a[]={};
struct myArr *pArr = a;
if(is_empty)
printf("数组为空!\n");
else
for(int i=0;i<pArr->cnt; i++)
printf("%d\n",pArr->pBase[i]);
return 0;
}
bool is_empty(struct myArr *pArr)
{
if(pArr->cnt == 0)
return true;
else
return false;
}
生成项目的时候出现错误,提示如下:
error C2061: syntax error : identifier 'is_empty'.
因为bool是c++类型,c语言中没有bool类型,你的源文件是.c文件,默认按c语言编译器编译,所以报错了,你可以定义bool类型:typedef int bool;也可以把文件后缀名改为.cpp,用c++编译器编译。
当我把这个test.c文件该位test.cpp再次编译的时候就没有错误了。
当然这是一种解决方案。另外还有2中解决办法
1、就是在前面定义bool类型
typedef int bool;
光这样定义是不行的,还会提示true和false没有定义,因此我们再把true和false定义下
#define true 1
#define false 0
加上这三句代码之后,test.c再次编译就成功了。
2、直接把bool和true,false全部一次定义进去,我们用每句enum。
typedef enum bool
{
false,
true
}bool;
这样之后也就能成功编译了。