通过变量通过外部库

问题描述

| 如何在C库提供的接口函数上执行按变量传递? 例如,我具有以下接口功能:
void f( double *d ) { *d = 7.5; }
在我的应用程序中,我通过该库进行链接并调用该函数:
double p = 0;
f( &p );
但是,我注意到p仍然是0,而不是7.5。     

解决方法

在您的应用程序中,您是否拥有范围为2的原型? 如果您还没有,编译器会将
p
的地址转换为int值。如果它们的大小不一样,或使用相同的传递约定,则说明存在问题。 您应该按4,否则您可以在调用函数之前直接在应用程序中添加原型。
double p = 0;
void f(double *);
f( &p );
    ,您的示例有效,请参见http://codepad.org/JJL7eab5。 我所做的唯一更改是在定义它之前先声明了“ 6”:
void f(double *);
如果将函数定义声明为静态,它也将起作用。在C语言中,需要在定义函数之前声明函数或将其声明为静态函数。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...