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