C++宏定义函数在C#中的实现
如下C++宏定义的函数,想用C#实现,如何实现?#define PIXEL_BIT_COUNT(n) ((n) << 16)
使用C#尝试如下实现,但是调用的时候报错
internal int PIXEL_BIT_COUNT(int n)
{
return n << 16;
}
调用:PixelType = 0x80000000 | PIXEL_BIT_COUNT(8) | 0x000c, --------------------编程问答-------------------- PixelType = unchecked((int)0x80000000 | PIXEL_BIT_COUNT(8) | 0x000c); --------------------编程问答-------------------- 0x80000000超出int范围了 --------------------编程问答--------------------
不好意思,可能是我没说清楚,我是要引用一个c++写的一个类库,他里边有一个枚举里是这样定义的:
public enum EPixelType
{
PixelType_Mono1packed = 0x80000000|PIXEL_BIT_COUNT(1)|0x000c,
PixelType_Mono2packed = 0x80000000|PIXEL_BIT_COUNT(2)|0x000d,
PixelType_Mono4packed = 0x80000000|PIXEL_BIT_COUNT(4)|0x000e,
...
....
}
然后C++里边对PIXEL_BIT_COUNT(1)的定义是这样的#define PIXEL_BIT_COUNT(n) ((n) << 16)
现在我要用C#来实现这个枚举类型,就需要先用C#定义一个具有PIXEL_BIT_COUNT这个宏定于函数功能的函数?
我现在就想问的就是如何有C#实现这个函数功能,使得能够在枚举里定义? --------------------编程问答--------------------
不好意思,可能是我没说清楚,我是要引用一个c++写的一个类库,他里边有一个枚举里是这样定义的:
public enum EPixelType
{
PixelType_Mono1packed = 0x80000000|PIXEL_BIT_COUNT(1)|0x000c,
PixelType_Mono2packed = 0x80000000|PIXEL_BIT_COUNT(2)|0x000d,
PixelType_Mono4packed = 0x80000000|PIXEL_BIT_COUNT(4)|0x000e,
...
....
}
然后C++里边对PIXEL_BIT_COUNT(1)的定义是这样的#define PIXEL_BIT_COUNT(n) ((n) << 16)
现在我要用C#来实现这个枚举类型,就需要先用C#定义一个具有PIXEL_BIT_COUNT这个宏定于函数功能的函数?
我现在就想问的就是如何有C#实现这个函数功能,使得能够在枚举里定义? --------------------编程问答-------------------- 你把宏展开不就可以了?
{
PixelType_Mono1packed = unchecked((int)0x80000000) | 1 << 16 | 0x000c,
PixelType_Mono2packed = unchecked((int)0x80000000) | 2 << 16 | 0x000d,
PixelType_Mono4packed = unchecked((int)0x80000000) | 4 << 16 | 0x000e,
}
补充:.NET技术 , C#