我应该如何清除这些错误以及为什么会出现这些错误?

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