gpt4 book ai didi

c++ - 使用 include 定义枚举

转载 作者:行者123 更新时间:2023-11-30 01:23:57 26 4
gpt4 key购买 nike

我使用 include 定义了一个枚举,因为有不同的枚举具有相同的枚举数据,我想重用它:

#define X(SYM) SYM
#define X_INIT(SYM,VAL) SYM = VAL
/// Destination for scalar memory read instruction
enum SSRC
{

#include "GenericInstructionFields1.h"
#include "ScalarInstructionFields.h"
#include "GenericInstructionFields2.h"

};
enum SDST
{

#include "GenericInstructionFields1.h"
};

#undef X_INIT
#undef X
};

但我无法为 SDST 编译代码。编译器对来自“GenericInstructionFields1.h”的SSRC的一个字段进行重新定义。问题的原因是什么,如何解决?

//GenericInstructionFields1.h
/// SGPR0 to SGPR103: Scalar general-purpose registers.
X_INIT(ScalarGPRMin,0),
X(ScalarGPR),
X_INIT(ScalarGPRMax,103),
/// 104 – 105 reserved.
X(Reserved104),
X(Reserved105),
X_INIT(Reserved,2),
/// vcc[31:0].
X_INIT(VccLo, 106),
/// vcc[63:32].
X(VccHi),

最佳答案

您不能在同一个命名空间中使用相同的枚举器进行枚举。这会重现您的问题:

enum X {A,B};
enum Y {A};

使用命名空间或为您的枚举值添加前缀。

关于c++ - 使用 include 定义枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14304445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com