1

我偶尔只用 C 编程,所以我想知道以下是否是个好主意:我在linked_matrix.c和中有两个矩阵的实现array_matrix.c,它们具有相同的公共方法,所以我创建了一个头文件matrix.h,其中包含以下内容:

#ifndef _MATRIX_H_
#define _MATRIX_H_

typedef matrix;

matrix* matrix_new(int num_rows, int num_cols);

...

#endif

然后每个.c文件将包含 的正确定义matrix,例如 (in array_matrix.c):

typedef struct {
    int** rows;
    int num_rows;
    int num_cols;
} matrix;

...

然后我用适当的文件编译程序.c。我知道我永远不需要同时使用它们,所以命名空间冲突不是问题。

该方法按预期编译和工作;但是,我想知道这个解决方案是否有任何明显的问题,经验丰富的 C 程序员可以发现,以及是否有更好的方法来实现我正在寻找的功能,即 Java/C# 中的接口:我可以针对一组导出的函数进行编程,并且可以将函数的实现换成另一个实现,而无需更改任何代码,只更改项目中包含的文件列表。

4

0 回答 0