当前位置:编程学习 > C#/ASP.NET >>

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范围了 --------------------编程问答--------------------
引用 2 楼 bdmh 的回复:
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#实现这个函数功能,使得能够在枚举里定义? --------------------编程问答--------------------
引用 1 楼 gomoku 的回复:
PixelType = unchecked((int)0x80000000 | PIXEL_BIT_COUNT(8) | 0x000c);

引用 2 楼 bdmh 的回复:
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#实现这个函数功能,使得能够在枚举里定义? --------------------编程问答-------------------- 你把宏展开不就可以了?

{
    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#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,