0

我是 C 新手,我有几个关于将结构值放入函数以及声明函数的正确方法的问题。

在我的 common.h 我已经定义

extern struct ddrautocal;
int get_eeprom_vals(uchar); // is this the correct declare the function?

在calibration.c中,我定义了我的结构并更改了一些设置一些值(未显示)

#include <common.h>
struct ddrautocal {
    u32 wdtr;
    u32 clkp;
    u32 rdcc;
};

在proc.c中

#include <common.h>
int get_eeprom_vals(struct ddrautocal *cal){
// I'd like to access cal.wdtr and cal.clkp
}

我是一个彻头彻尾的呆子,我知道,但我正在努力变得更好。我一整天都在努力让它工作,并想知道我是否在 common.h 中正确声明了该函数,以及在位于 proc.c 的 get_eeprom_vals 函数中访问 ddrautocal 结构的正确方法是什么任何帮助都会不胜感激。谢谢!

4

2 回答 2

1

int get_eeprom_vals(uchar);签名错误..应该是:

int get_eeprom_vals(struct ddrautocal *cal);所以前向声明和函数定义的签名匹配。

要访问成员,您需要:cal->wdtrcal->clkp(*cal).wdtr (*cal).clkp

-> 使用指针间接运算符。* 是间接运算符和句点(点)的组合,用于访问该字段。

我也认为你需要#include "common.h"而不是#include <common.h>common.h 不是系统头文件。

于 2012-10-30T22:06:03.650 回答
0

首先要知道的是,我们必须确保函数的声明和它的定义相互匹配。在您的情况下,定义具有签名:

int get_eeprom_vals(struct ddrautocal *cal)

(函数的签名包括其名称和参数列表)。

您需要将声明替换为:

int get_eeprom_vals(struct ddrautocal *cal);

此外,如果您想使用句点来取消引用结构的成员,您可以如下声明您的函数,然后您可以将其成员引用为您所显示的

int get_eeprom_vals(struct ddrautocal cal);
{
     // you can use cal.wdtr etc
}
于 2012-10-30T22:28:50.237 回答