[英]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中,您可以在構建之前和之后運行命令。 然后,您可以使用其他程序生成/編輯此枚舉。 你基本上可以編輯整個文件。
編輯:您在項目屬性下找到此選項,然后在構建事件
一種可能的解決方案是:
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.