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

时间:2015-04-09 19:15:24

标签: c pointers pic32

我现在已经撞墙了,想恢复速度。

我有一个“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编译器不喜欢“&”

1 个答案:

答案 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