我应该如何清除这些错误以及为什么会出现这些错误?
How should I clear these errors and why are they there?
从“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 );
}
the error message appears at line
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
是一个数组,数组名是non-modifiable个左值,改为:
strcpy(cats[0].name, name);
或更好:
snprintf(cats[0].name, sizeof cats[0].name, "%s", name); // Avoid buffer overflows
从“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 );
}
the error message appears at line
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
是一个数组,数组名是non-modifiable个左值,改为:
strcpy(cats[0].name, name);
或更好:
snprintf(cats[0].name, sizeof cats[0].name, "%s", name); // Avoid buffer overflows