[英]define function and pass struct values
我是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
}
我知道我是一個完全的derp,但是我正在努力變得更好。 我一直在努力使它整天工作,並且想知道我是否在common.h中正確聲明了該函數,以及在proc.c中的get_eeprom_vals函數中訪問ddrautocal結構的正確方法是什么?非常感謝。 謝謝!
int get_eeprom_vals(uchar);
簽名是錯誤的。應該是:
int get_eeprom_vals(struct ddrautocal *cal);
因此,前向聲明的簽名與函數定義匹配。
要訪問成員,您需要: cal->wdtr
, cal->clkp
或(*cal).wdtr (*cal).clkp
->使用指針間接操作符。 *是間接運算符和句點(點)的組合,用於訪問字段。
我還認為您需要#include "common.h"
而不是#include <common.h>
因為common.h不是系統頭文件。
首先要知道的是,我們必須確保函數的聲明與其定義相互匹配。 在您的情況下,定義具有簽名:
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
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.