gpt4 book ai didi

PIC32 中的 C,在 2 个 *.c 文件之间传递结构变量

转载 作者:行者123 更新时间:2023-11-30 15:21:34 25 4
gpt4 key购买 nike

我现在碰壁了,想恢复速度。

我有一个“fileA.c”文件和“fileB.c”文件,我想在它们之间传递变量。此外,“fileA.h”和“fileB.h”分别是 header 。

“fileA.c”到“fileB.c”中的变量UINT16 Storage1.CntLog1.PosEdge。我如何使用指针来做到这一点?

下面是 FileA.h 头文件的代码片段,我想将变量 PosEdge 传递给另一个 FileB.c 作为引用。 PosEdge 有 2 个变量,一个在 Header 中,另一个在 c 文件中。任何人都会做。

typedef struct                   
{
UINT16 PosEdge;
} S_PosEdge;

typedef struct S_CntLog1
{
S_PosEdge CntLog1;
} S_CntLog1;

这是 FileA.c 的片段

typedef struct                
{
UINT16 PosEdge;
} S_CntLog2;

PRIVATE S_CntLog1 Storage1;
PRIVATE S_CntLog2 *Storage2 = NULL;

Storage1.CntLog1.PosEdge = Storage2->PosEdge;

我尝试了什么......我尝试使用这样的东西

UINT16 ShareLog(void)
{
return (Storage1.CntLog1.PosEdge);
}

并在头文件“fileA.h”中类似地声明它,然后在“fileB.c”中声明“#include fileA.h”,此外如果(Storage1.CntLog1.PosEdge==0x01)则闪烁LED

我不知道如何使用指针发送此信息......任何帮助将不胜感激。谢谢。也许类似于

UINT16* pntr1 =&Storage1.CntLog1.PosEdge;

但是 PIC32 编译器不喜欢“&”

最佳答案

一种可能的方法是使用通用头文件,i.d. common.h 包含在“fileA.c”和“fileB.c”中

#ifndef COMMON_H
#define COMMON_H

extern UINT16 *global_pulse_count;

#endif /*COMMON_H*/

在文件“fileA.c”中,您必须添加两件事:

1)为全局变量保留内存(在任何函数体之外):

UINT16 *global_pulse_count;(注意这里没有外部。)

2) 在某个适当的函数中(您肯定会有一个 init() 函数)

global_pulse_count = &Pulse.count;(将地址分配给全局指针变量。)

之后您可以访问(*global_pulse_count)来从“fileA.c”和“fileB.c”读取和写入。

HTH

关于PIC32 中的 C,在 2 个 *.c 文件之间传递结构变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29547035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com