使用C实现模块间数据共享的一种好方法

使用C实现模块间数据共享的一种好方法,c,modularity,C,Modularity,有两个C模块:A和B。它们彼此独立 如果我想让它们尽可能独立,那么在它们之间交换数据的最佳方式是什么?我将告诉您如何管理整数,这非常简单!…) 下面是一个例子。我们有三个档案:a.c,b.c和b.h 文件a.c将管理一个整数,该整数由b.c模块全局静态分配(静态地将变量隐藏到其他c模块),b.c模块公开用于管理该整数的函数 文件b.h包含模块b.c公开的函数的声明 文件a.c是: #include "b.h" int main(void) { setdata(8); print

有两个C模块:A和B。它们彼此独立


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

我将告诉您如何管理整数,这非常简单!…)

下面是一个例子。我们有三个档案:a.c,b.c和b.h

文件a.c将管理一个整数,该整数由b.c模块全局静态分配(静态地将变量隐藏到其他c模块),b.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”来实现信息隐藏。在函数外部,这意味着“仅从此.c文件可见”;在函数内部,它表示“此函数的局部性,但持久性”


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

您应该解释“模块”的含义,并包括您编写的任何代码,以使问题更加清楚。当您说“模块”时,这是什么意思?功能?翻译单位?程序?共享库?还有什么?什么样的数据?你说的“模块”是什么意思?在什么方面也是“独立”的?我认为你的问题没有很好的表述。标题是关于共享数据,在正文中,您将介绍如何在模块之间交换数据。这是不一样的。请指定是要共享数据(读取和修改数据)还是交换数据(发送数据并获得结果)?最好认为这是在C模块之间共享变量的唯一方法。但也存在一种(最坏的)调用方法,即直接将其声明为extern到包含文件中,该文件指示模块公开的函数和数据!