C程序设计

use*_*540 7 c

对于强大的C程序来说,这样做是好/正确的方法吗?

//File1 => Module1.h

static int Fun(int);

struct{
int (*pFn)(int)
}Interface;
Run Code Online (Sandbox Code Playgroud)

// File2 => Module1.c

static int Fun(int){
//do something
}

Interface* Init(void)
{
  Interface *pInterface = malloc(sizeof(Interface));
  pInterface->pFn = Fun;
  return pInterface;
}

//File 3 => Module2.c
#include"Module1.h"
main()
{
  Interface *pInterface1 = Init();
  pInterface1->pFn(5);
}
Run Code Online (Sandbox Code Playgroud)

我的目的是让每个模块暴露一个接口......

问题:

  1. 编写一个像上面这样的C代码来暴露一个接口是不是很好......
  2. 有哪些更好的方法可用于暴露界面?
  3. C编程(不是C++)的设计原则是否有任何参考?

Pot*_*ter 1

这对于动态加载的模块来说更惯用。(或者类似的东西。)

通常,两个源文件之间的接口是使用extern直接访问的函数和对象来定义的。你需要为做任何更复杂的事情提供理由。