c++ - 冲突的枚举

标签 c++ c

如果两个不同的库定义相同的枚举并且我需要在同一个项目中使用这两个库会怎样?

枚举月份 {January=0, February, ..., December}

谢谢。

附言它是 C。没有命名空间。我不能让他们分开。需要一些解决方法。

什么是枚举链接?内部还是外部? C++ 项目中使用的 C 库。 C++ 标签适用。

最佳答案

C libs used in C++ project. C++ tag applies

由于它们在 C++ 项目中使用,因此在将它们包含在 C++ 代码中时可以使用命名空间,如下所示:

// C files
//libone.h 
enum Month {January=0, February, ..., December}

//libtwo.h
enum Month {January=0, February, ..., December}

///////////////////////////////////////////////////////////////////
//C++ files

//lib.hpp
namespace LibOne 
{
     #include "libone.h"
}
namespace LibTwo 
{
     #include "libtwo.h"
}

//Usage in C++
LibOne::Month m1 = LibOne::January;
LibTwo::Month m2 = LibTwo::January;

关于c++ - 冲突的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6285872/

相关文章:

c++ - 如何让 clang-format 的c++ long for循环分成三行?

c++ - 为什么编译器需要尾随返回类型?

c - sscanf 目标地址溢出

c - 用一次乘法提取位

c++ - "built-in"C++ 函数

c++ - 这个 Valgrind 错误的原因是什么?

c++ - 为什么 GCC 中的 -Wunused-variable 即使在静态常量上也会产生错误?

c - 为什么修改一个不相关的变量会导致我的链表发生变化?

c - c 中的管道消息被截断

c - 用 C 将字符串写入二进制文件