如下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,

解决方案 »

  1.   

    PixelType = unchecked((int)0x80000000 | PIXEL_BIT_COUNT(8) | 0x000c);
      

  2.   

    不好意思,可能是我没说清楚,我是要引用一个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#实现这个函数功能,使得能够在枚举里定义?
      

  3.   

    不好意思,可能是我没说清楚,我是要引用一个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#实现这个函数功能,使得能够在枚举里定义?
      

  4.   

    你把宏展开不就可以了?{
        PixelType_Mono1packed = unchecked((int)0x80000000) | 1 << 16 | 0x000c,
        PixelType_Mono2packed = unchecked((int)0x80000000) | 2 << 16 | 0x000d,
        PixelType_Mono4packed = unchecked((int)0x80000000) | 4 << 16 | 0x000e,
    }