可以在不同的文件中定义具有相同名称的静态内联函数吗?

时间:2017-11-30 06:26:15

标签: c

例如,a.h

static inline void asdf(int a) {}

b.h

static inline void asdf(int a) {}

这样可以吗?会有冲突吗?

2 个答案:

答案 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

因为实现的选择将依赖于编译时常量