档案a.c:
#include<stdio.h>
int main(int argc, const char *argv[])
{
double r = 0;
r = call(10.0,2.0);
printf("r:%lf\n",r);
return 0;
}
函数call()在静态库中,例如:
文件call.c
#include<stdio.h>
double call(double a,double b){
double c;
c = a + b;
printf("c :%lf\n",c);
return c;
}
我使用的命令是
gcc -c call.c -o call.o
ar rcs libcall.a call.o
gcc -o a a.c -lcall -L.
那么结果为什么不是12?如果将double类型更改为int类型,则结果为12。
最佳答案
使用警告进行编译,编译器将告诉您为什么它是错误的。
您没有函数call
的原型,因此当您从main调用它时,它会得到一个隐式的int
返回类型,而不是它实际返回的类型。
关于c - 为什么静态库函数的值错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21779883/