如何解决我应该如何清除这些错误以及它们为什么在那里?
从'int(*)()'分配给'int'会使指针变为整数,而无需强制转换[-Werror = int-conversion]
提供一些背景信息:
int functionA(){
int a;
....//some operation on a
return a;
}
void functionB(){
int b = functionA;
}
错误消息出现在行
int b = functionA;
我不断收到的另一个错误是: 错误:“]”令牌之前的预期表达式
提供上下文:
struct cat{
char name[10];
} cats[10];
void functionC(char name[]){
cats[0].name = name[];
}
错误发生在cats [0] .name = name [];
解决方法
在此声明中
int b = functionA;
右侧操作数的类型为int(*)(),它是一个函数指针。看来您的意思是该函数的调用。
int b = functionA();
并且数组没有赋值运算符。写
void functionC( const char name[] ){
strcpy( cats[0].name,name );
}
,
错误消息出现在行
int b = functionA;
您忘记了括号:
int b = functionA();
在C语言中,首选int functionA(void)
(不带参数的函数)而不是int functionA()
(不带参数数量的函数)
struct cat{
char name[10];
} cats[10];
void functionC(char name[]){
cats[0].name = name[];
}
cats[0].name
是一个数组,数组名称是不可修改的左值,
strcpy(cats[0].name,name);
或更妙的是:
snprintf(cats[0].name,sizeof cats[0].name,"%s",name); // Avoid buffer overflows
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。