例如,a.h
static inline void asdf(int a) {}
b.h
static inline void asdf(int a) {}
这样可以吗?会有冲突吗?
答案 0 :(得分:2)
技术上,是的,没关系。静态函数只能在同一个编译单元中看到。
实际上,不,它不行。它使您的代码难以阅读,如果我以后必须维护您的代码,我会讨厌您。要么是因为函数做了不同的事情,要么因为有人修复了其中一个错误并忘记了另一个错误,因此它们会发生分歧。
答案 1 :(得分:0)
如果没有单一来源包括两个标题,那就没关系了。如果所有.c文件只包含a.h或只包含b.h或者没有,那么一切都会没问题。
如果两个标题都包含在同一个源中,则重新定义asdf会出错。
一个可接受的例子是,如果.c文件中没有一个直接包含a.h或b.h,而只包含一个包含以下内容的c.h文件:
#ifdef A_TYPE
#include a.h
#else
#include b.h
#endif
因为实现的选择将依赖于编译时常量