通过外部库传递变量

时间:2011-05-24 15:37:15

标签: c pointers parameter-passing

如何在C库提供的接口函数上执行变量传递?

例如,我有以下界面功能:
void f( double *d ) { *d = 7.5; }

在我的应用程序中,我链接到该库并调用该函数:
double p = 0;
f( &p );

然而,我注意到p仍为0而不是7.5。

2 个答案:

答案 0 :(得分:2)

您的应用程序中是否有范围f的原型?

如果您还没有编译器将p的地址转换为int;如果它们的大小不同或使用相同的传递约定或其他任何东西,那么你就会遇到问题。

您应该#include "the_proper_header.h"或者在调用函数之前直接在应用程序中添加原型。

double p = 0;
void f(double *);
f( &p );

答案 1 :(得分:0)

您的示例有效,请参阅http://codepad.org/JJL7eab5

我做的唯一改变是在定义之前我声明了f()

void f(double *);

如果函数定义声明为static,它也可以工作。在C中,函数需要在它们的定义之前声明或声明为static。