0

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

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

“fileA.c”中的变量UINT16 Storage1.CntLog1.PosEdge到“fileB.c”。如何使用指针执行此操作?

下面是 FileA.h 头文件的代码片段,我想将变量 PosEdge 作为参考传递给另一个 FileB.c。在 Header 中有 2 个变量 PosEdge,一个在 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 编译器不喜欢“&”

4

1 回答 1

1

一种可能的方法是一个通用的头文件,id 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”进行读写。

高温高压

于 2015-04-09T19:44:24.540 回答