首先:我使用的是C ++ - CLI,但我也想知道C#的解决方案。
使用以下代码
汇编"基础知识"
public ref class CONSTS abstract sealed
{
public:
static const int SUCCESS = 1;
static const int InProgress = 101;
};
汇编"节目"
enum class EnumReplyLLI
{
Nothing = 0,
SUCCESS = CONSTS::SUCCESS, // C2057
Busy = CONSTS::InProgress, // C2057
...
};
我收到错误 C2057:预期的常量表达式
如何定义编译时常量并在另一个程序集中使用它? 我的代码几乎与this SO post中接受的答案相同,但这不起作用。
答案 0 :(得分:2)
C#
中const
C++/CLI
的实际等价物为literal
,因此您的CONSTS
类应如下所示:
public ref class CONSTS abstract sealed
{
public:
literal int SUCCESS = 1;
literal int InProgress = 101;
};
答案 1 :(得分:1)
不确定为什么它不能用C ++工作,但这是C#中的等效代码:
public static class CONSTS
{
public const int SUCCESS = 1;
public const int InProgress = 101;
};
enum EnumReplyLLI
{
Nothing = 0,
SUCCESS = CONSTS.SUCCESS,
Busy = CONSTS.InProgress,
};