我有一些结构和相应的函数可以对它们进行操作,它们写在它们自己的头文件和 c 文件中。
我想知道是否有可能为代码创建一个新的头文件和 c 文件,这些代码将使用新的适当描述性声明“继承”那些特定类型和函数?是否可以以这种方式对函数和结构进行 typedef 以重用代码?
我已经研究过函数指针,但我不确定这是否是实现我所追求的目标的正确工具。我想另一种选择是重构代码,以便名称是通用的。
代码示例:
// function1.h
typedef struct src_data {
...
} src_data;
src_data* process_src_data(...) {
...
return new_data;
}
// function2.h
#include "function1.h"
typedef src_data dest_data;
typedef dest_data* (*process_dest)(void);
process_dest process_dest_data = &process_src_data;
用法如下:
#include "function1.h"
#include "function2.h"
src_data *sourceData = process_src_data(...);
dest_data *destinationData = process_dest_data(...);
是否可以为代码创建一个新的头文件和 c 文件,以便使用新的适当描述性声明“继承”这些特定类型和函数?
C 是一种非常(现在;)简单的语言,您必须自己编写很多。其他语言——尤其是面向对象的语言、C++、Java——具有内置的“继承”功能,该语言本身允许将所有功能从一个地方“导入”到另一个地方。
C 没有这个功能。在 C 中,您必须自己从头开始编写所有内容。
我不确定这是否正确
// function1.h
src_data* process_src_data(void) { /* NO */ }
而是将函数声明放在源文件中的头文件和定义中。
// function1.h
src_data* process_src_data(void); //ok
// function1.c
src_data* process_src_data(void) { ok(); }
否则它不是“正确的”,从某种意义上说.c
,包含链接在一起的头文件的多个文件将导致“多重定义”问题。
// function2.h
process_dest process_dest_data = &process_src_data;
要么制作函数指针static
,要么将其移动到单独的 C 源文件并添加extern
到头文件中。const
如果它打算保持不变,则另外添加它,因此可以将其优化为只读部分而不使用 RAM。
// function2.h
extern const process_dest process_dest_data;
// function2.c
const process_dest process_dest_data = &process_src_data;
工具来实现我所追求的。
函数指针占用内存。调用函数指针需要取消对它们的引用。它们很难优化。
在 C 中编写短static
包装函数是很典型的:
// function2.h
static process_dest process_dest_data(void) {
return process_src_data();
}
如果函数很短,它将被编译器内联并从生成的可执行文件中删除。对于更长的时间,只需编写一个调用底层实现的常规函数即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句