C++宏定义函数在C#中的实现

jjbhql 2013-09-23 04:16:49
如下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,
...全文
425 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gomoku 2013-09-23
  • 打赏
  • 举报
回复
你把宏展开不就可以了?

{
    PixelType_Mono1packed = unchecked((int)0x80000000) | 1 << 16 | 0x000c,
    PixelType_Mono2packed = unchecked((int)0x80000000) | 2 << 16 | 0x000d,
    PixelType_Mono4packed = unchecked((int)0x80000000) | 4 << 16 | 0x000e,
}
jjbhql 2013-09-23
  • 打赏
  • 举报
回复
引用 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#实现这个函数功能,使得能够在枚举里定义?
jjbhql 2013-09-23
  • 打赏
  • 举报
回复
引用 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#实现这个函数功能,使得能够在枚举里定义?
bdmh 2013-09-23
  • 打赏
  • 举报
回复
0x80000000超出int范围了
gomoku 2013-09-23
  • 打赏
  • 举报
回复
PixelType = unchecked((int)0x80000000 | PIXEL_BIT_COUNT(8) | 0x000c);

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧