【发布时间】:2020-07-12 19:40:58
【问题描述】:
我在标头中有一个函数,需要实现该函数才能使其余代码正常工作。通常我会在包含标头后在main.c 中实现此功能,链接器将清理其余部分。
例如假设这个函数是void foo(bool); in foo.h
如果我有另一个函数作为与任务完全匹配的其他代码的一部分实现,假设void bar(bool); 在某些bar.h 和bar.c 中实现
我通常会通过包含bar.h 和做来将两者联系起来
void foo(bool var) {
bar(var);
}
如果有很多这些,基本上只是很多一行函数,用于告诉函数调用不同的函数。
有没有其他方法可以做到这一点?
【问题讨论】:
-
重构代码以不使用
foo开头? -
在 c99 中,您可以将 foo 作为 foo.h 中的内联函数。否则 #define foo bar 可能会产生不良影响
-
我想在某种设置函数中重构使用传递给
foo.c的函数指针作为一种选择是有意义的。 -
我真的认为你应该退后一步,问问自己这个问题:为什么你需要
foo和bar?除了名字,它们之间有什么区别?调用foo与调用bar的目的是什么? -
这听起来像X-Y-problem。你真的想完成什么? -- 由于您标记了 GCC,您可能想尝试链接器选项
--wrap。