C vs C++ 枚举与外部链接 "C"

C vs C++ enum linkage with extern "C"

我有一个 header,其中只声明了一个无作用域的枚举:

foo.h:

#ifndef FOO_BAR_ENUM_H
#define FOO_BAR_ENUM_H

typedef enum Foo {
    Bar,
    BigBar,
    LittleBar,
    MassiveBar
    BarCount
} Foo;

#endif

我在 C 和 C++ 中都使用了这个 header。它应该由 extern "C" 块保护吗?包括两个编译都很好,但是在这种用法中是否存在链接差异,就编译器而言是有效的,但可能不是天真的用户所期望的?

这个 header 不会生成任何链接符号,因此没有必要用 extern "C" 块来保护它。