我只是偶尔在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
的正确定义,例如(在array_matrix.c
中):
typedef struct {
int** rows;
int num_rows;
int num_cols;
} matrix;
...
然后我用适当的.c
文件编译程序。我知道我永远不需要同时使用它们,因此命名空间冲突不是问题。
该方法按预期编译和工作;但是,我想知道这个解决方案是否有任何明显的问题,经验丰富的C程序员可以发现,以及是否有更好的方法来实现我正在寻找的功能,这是Java / C中的接口# :我可以针对一组导出的函数进行编程,我可以在不更改任何代码的情况下将函数的实现替换为另一个实现,只需要包含项目中包含的文件列表。