使用 C 在模块之间共享数据的好方法

a good way of sharing data between modules using C

有两个C模块:A和B。它们相互独立。

如果我想让它们尽可能独立,那么在它们之间交换数据的最佳方式是什么?

我教你如何管理一个整数,很简单! ... :)

示例如下。我们有三个文件:a.c、b.c 和 b.h

文件 a.c 将管理一个整数,该整数由 b.c 模块全局静态分配(静态地向其他 C 模块隐藏变量),该模块公开管理该整数的函数。

文件 b.h 包含模块 b.c 公开的函数声明。

文件a.c是:

#include "b.h"

int main(void)
{
    setdata(8);
    printf("%d\n",getdata());
    return 0;
}

文件b.c可能是:

#include "b.h"

static int data; /* Here static means data is hidden to other C modules */

int getdata(void)
{
    return data;
}

void setdata(int val)
{
    data=val;
}

文件b.h

#ifndef B_H__
#define B_H__

void setdata(int);
int getdata(void);

#endif

在 C 中,您通过在 "static" 处声明持久变量来实现信息隐藏。在函数之外,这意味着 "only visible from this .c file";在函数内部,它表示 "local to this function, but persistent".

然后您只能通过调用函数、将值传递给它们并从中获取 return 值来在模块之间进行通信。