Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何避免与其他.cxx重复枚举值_C++_Enums - Fatal编程技术网

C++ 如何避免与其他.cxx重复枚举值

C++ 如何避免与其他.cxx重复枚举值,c++,enums,C++,Enums,我的代码库中有大量文件。我正在尝试使用另一个库编译我的代码库,该库有一个文件a.h。 如果在我的代码库中包含一个.h文件,该文件已使用与a.h中定义的相同枚举定义了一些值,则我会遇到编译问题。例如: 在“a.h”头文件中 typedef enum mylist_s { FIRST, SECOND, THIRD, FOUR, :::::: } mylist_e; 在其他.cxx文件中,如下所示(如果其定义与mylist中的定义相同) 我知道同样的变量也有一个定义。

我的代码库中有大量文件。我正在尝试使用另一个库编译我的代码库,该库有一个文件a.h。 如果在我的代码库中包含一个.h文件,该文件已使用与a.h中定义的相同枚举定义了一些值,则我会遇到编译问题。例如:

在“a.h”头文件中

typedef enum mylist_s
{
   FIRST,
   SECOND,
   THIRD,
   FOUR,
   ::::::
} mylist_e;
在其他.cxx文件中,如下所示(如果其定义与mylist中的定义相同)

我知道同样的变量也有一个定义。 我不想用新变量更改代码库。 另外,由于a.h同时包含在.c和.cxx文件中,所以我不能使用名称空间将其封装为其他名称

我也不想更改.h文件中的名称。 有没有其他方法可以在不更改枚举值名称的情况下处理这种情况

提前感谢

C++可以防止名称冲突的发生


在自定义名称空间中定义所有实现代码应该可以解决此问题。

我使用了与下面提到的相同的问题:

struct mylist_s
{
    enum Type
    {
        FIRST,
        SECOND,
        THIRD,
        FOUR
    };
};
typedef mylist_s::Type mylist_e;

这就是
namespace
s被发明的目的。您可以将
FIRST=1
打包为一个。将所有代码放在名称空间中我不能使用名称空间,因为.c文件中也包含“a.h”文件。可能是我们需要在.cYou不遵循的情况下在中查找命名空间的等效项。您可以在
cxx
文件中使用空格,而不是无法更改的标题。顺便说一句,您还可以选择将
#include
指令放置在命名空间中。。
struct mylist_s
{
    enum Type
    {
        FIRST,
        SECOND,
        THIRD,
        FOUR
    };
};
typedef mylist_s::Type mylist_e;