初学C语言fatal error LNK1120: 1 unresolved externals怎么办?

2025-05-15 16:01:23
推荐回答(5个)
回答1:

unresolved externals错误是由于函数未进行声明造成,可以在被调用地方前面进行声明即可消除该错误。

正确的程序如下:

扩展资料

在书写形式上,函数声明可以把函数头部复制过来,在后面加一个分号;而且在参数表中可以只写各个参数的类型名,而不必写参数名。

就像变量可以在头文件中声明,而在源文件中定义一样,函数也可以在头文件中声明,在源文件中定义。

把函数声明直接放在每个使用该函数的源文件中是大多数新手习惯并喜爱的方式,这是合法的。但是这种方式古板且易出错。解决方法就是把函数的声明放在头文件中,这样可以确保对于指定函数其所有声明保持一致。如果函数接口发生变化,则只需修改其唯一声明即可。

注意

1、函数声明可以省略形参名,但是函数定义的首部必须写出所有形参名并给出其对应的数据类型。

2、函数原型的主要目的为声明函数返回值类型以及函数的期望接受的参数的个数、参数类型和参数顺序

3、如果程序中没有某个函数的函数原型(没有说明),编译系统就会用第一次出现的这个函数(函数定义或函数调用)构造函数原型

参考资料来源:百度百科-函数声明

回答2:

unresolved externals错误是由于函数未进行声明造成,可以在被调用地方前面进行声明即可消除该错误。

正确的程序如下:

#include

int jh(int a,int b);  // 函数声明,进行声明后即可消除unresolved externals错误

int main()

{

int a=4,b=8, c;

c=jh(a,b);   // 由于调用函数jh之前没进行函数的声明,所以会报错

printf("%d,%d,%d",a,b,c);

}

int jh(int a,int b)  // 函数定义在被调用之后,必须进行函数的声明

{

int c;

c=a;

a=b;

b=c;

return c;

}

扩展资料:

以书面形式,函数声明可以复制函数头并在末尾添加分号; 并且只能在参数表中写每个参数的类型名称,而不能写参数名称。

正如可以在头文件中声明变量并在源文件中定义变量一样,也可以在头文件中声明函数并在源文件中定义函数。

将函数声明直接放在使用该函数的每个源文件中是大多数新手习惯和喜欢的方式,这是合法的。 但是这种方法过时且容易出错。 解决方案是将函数声明放在头文件中,这可以确保指定函数的所有声明都是一致的。 如果函数接口更改,则仅需要修改其唯一声明。

参考资料来源:

百度百科-函数声明

回答3:

unresolved externals错误是由于函数未进行声明造成,可以在被调用地方前面进行声明即可消除该错误。

#include
int main()
{
    int a=4,b=8, c;
    c=jh(a,b);   // 由于调用函数jh之前没进行函数的声明,所以会报错
    printf("%d,%d,%d",a,b,c);
}
int jh(int a,int b)  // 函数定义在被调用之后,必须进行函数的声明
{
    int c;
    c=a;
    a=b;
    b=c;
    return c;
}

正确的程序如下:

#include
int jh(int a,int b);  // 函数声明,进行声明后即可消除unresolved externals错误
int main()
{
    int a=4,b=8, c;
    c=jh(a,b);   // 由于调用函数jh之前没进行函数的声明,所以会报错
    printf("%d,%d,%d",a,b,c);
}
int jh(int a,int b)  // 函数定义在被调用之后,必须进行函数的声明
{
    int c;
    c=a;
    a=b;
    b=c;
    return c;
}

注:将自定义函数写在被调用之前的位置,可以不需要进行函数声明。如:

#include
int jh(int a,int b)  // 函数定义在被调用之前,可以不进行函数的声明
{
    int c;
    c=a;
    a=b;
    b=c;
    return c;
}
int main()
{
    int a=4,b=8, c;
    c=jh(a,b);   
    printf("%d,%d,%d",a,b,c);
}

回答4:

也许是函数声明没放在最前面吧?而且你的main函数怎么用的是int类型,c语言里的main函数都是void类型,C++里的才有int型main函数,而且还需要返回值的。
再插两句嘴,1.你的程序不会交换数据,因为你只是把形参的值转换了一下,实参值没有转换,要么用指针变量做参数,要么返回两个数据并且有变量接收,否则你的程序就算编译通过也得不到结果。2.最严重的是:你根本就没有调用你自己写jh()函数,主函数第二行那个只是声明,不是调用。

回答5:

重新建一个工程看看吧
我可以确定的是代码绝对是正确的,在我的电脑上可以跑出结果
但是你的函数没有使用引用或者指针,得不到交换数值的效果的,结果还是4和8