我现在已经撞墙了,想恢复速度。
我有一个“fileA.c”文件和“fileB.c”文件,我想在它们之间传递变量。此外,“fileA.h”和“fileB.h”分别是标题。
“fileA.c”中的变量UINT16 Storage1.CntLog1.PosEdge
到“fileB.c”。
我如何使用指针执行此操作?
下面是FileA.h头文件的代码片段,我想传递给另一个FileB.c变量PosEdge作为参考。在Header中有2个varibales PosEdge,在c文件中有2个。任何人都会这样做。
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”并进一步闪烁LED如果(Storage1.CntLog1.PosEdge == 0x01)
我不知道如何使用指针发送此信息.....任何帮助将不胜感激。谢谢。
可能是一些东西UINT16* pntr1 =&Storage1.CntLog1.PosEdge;
但PIC32编译器不喜欢“&”
答案 0 :(得分:1)
一种可能的方法是公共头文件,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