簡體   English   中英

定義函數並傳遞結構值

[英]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->wdtrcal->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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM