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"
块来保护它。
我有一个 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"
块来保护它。