簡體   English   中英

引用結構中的變量

[英]Referencing variables in a structure

最近,我開始對AVR微控制器進行編程,以提高我的C編程能力。 現在,我正在嘗試檢查兩個按鈕的狀態,這是在main.c文件開頭執行的操作。 我將它們放在單獨的C文件中,並試圖調用此函數。

我有兩個問題:

第一個與頭文件和.c文件有關。 我已經閱讀了幾個有關如何編寫頭文件並鏈接它們的示例,但對我來說似乎是違反直覺的。 頭文件在與其對應的c文件中調用該函數,並且相應的c文件和主文件都包括頭文件。 頭文件如何在.c文件中調用函數,但該c文件必須包含頭文件?

第二個問題是關於引用結構中的變量。 我已經按照示例制作了一個結構,但不確定如何在main.c文件中調用它。 我的代碼如下:

這是我的頭文件:

//Check_Touch_Inputs.h

#ifndef Check_Touch_Inputs_H_
#define Check_Touch_Inputs_H_

int Check_Touch_Inputs(uint8_t topPadState, bottomPadState);

#endif

這是我對應的C文件:

//Check_Touch_Inputs.c

#include <avr/io.h>
#include "Check_Touch_Inputs.h"

struct touchPads{
    uint8_t topPadState, bottomPadState;
}

struct touch    Pads padStates(){
    struct touchPads result;

    if (PINC & 1<<PC1)
    {
        result.topPadState = 1;
    }
    else
    {
        result.topPadState = 0;
    }

    if (PINC & 1<<PC3)
    {
        result.bottomPadState = 1;
    }
    else
    {
        result.bottomPadState = 0;
    }

    return result;
}

最后,這是我嘗試返回主文件中的按鈕狀態的嘗試。 我知道這是錯誤的,但會失敗:

    uint8_t topPadState = Check_Touch_Inputs(topPadState);
    uint8_t bottomPadState = Check_Touch_Inputs(bottomPadState);

非常感謝您的幫助。 抱歉,這些是初學者的問題。 這些問題可能已經回答了,但是我沒有遇到真正令我滿意的答案。

首先,您認為.h和.c文件之間存在差異的想法是不正確的。

用C編寫的程序由許多文本文件組成,這些文本文件分別編譯為目標文件。 目標文件由實現單獨功能的代碼和全局符號表組成。

為了鏈接到一個函數(符號),您必須擁有它的prototype 出於歷史原因, 原型在.h文件中定義,而可編譯的文本位於.c文件中。 通常,您在相應的.c文件中包含.h,以檢查您的實現與原型是否匹配。

您的秒數問題:您將必須定義結構:

struct touchPads{ uint8_t topPadState, bottomPadState; }

在.h文件中,以便在main中定義該類型的變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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