繁体   English   中英

如何用c#中的宏函数生成编译时枚举值?

[英]How to generate compile time enum values with a macro function in c#?

我想生成编译时枚举值。

正如我们在c

 #define macfun(x) (128 | ((unsigned int)(x) << 16L)

现在,如果想要生成另一个常量,我就是这样做的

 #define JISCHAR    macfun(3)

我正在制作第三方库的C#包装器,它定义了许多不同类型的常量。

我可以在C#编译时实际生成枚举吗?

计算常量和赋值给变量的其他方法是什么?

在Visual Studio中,您可以在构建之前和之后运行命令。 然后,您可以使用其他程序生成/编辑此枚举。 你基本上可以编辑整个文件。

编辑:您在项目属性下找到此选项,然后在构建事件

根据@PaulF和来自这里的类似答案。

一种可能的解决方案是:

     public sealed class UnixDBCSPages
     {
        public static readonly uint JIS           = MakeUnixDBCS(Convert.ToUInt32(0x0C));
        public static readonly uint EUCJP         = MakeUnixDBCS(Convert.ToUInt32(0x0D));
        public static readonly uint CNS11643_1    = MakeUnixDBCS(3);
        public static readonly uint EUC_CNS_1     = MakeUnixDBCS(7) ;                             
        public static readonly uint CNS11643_2    = MakeUnixDBCS(4) ;
        public static readonly uint EUC_CNS_2     = MakeUnixDBCS(8);                             
        public static readonly uint KSC1987       = MakeUnixDBCS(6);
        public static readonly uint GB2312        = MakeUnixDBCS(5);


        private static uint MakeUnixDBCS(uint wCodePage)
        {
            uint wUnixUnmask = Convert.ToUInt32(Flags.UnixUnmask);                
            return (wUnixUnmask | wCodePage) << 16;
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM