【发布时间】:2009-11-01 01:21:48
【问题描述】:
您将如何将以下 C#define 转换为 c#。
#define get16bits(d) (*((const uint16_t *) (d)))
#if !defined (get16bits)
#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
+(uint32_t)(((const uint8_t *)(d))[0]) )
#endif
我知道你可能会替换 uint32_t ,它用 UInt32 将其他类型更改为 c# 等效,但是如何将上述方法设为静态方法。这会是最好的方法吗?
鲍勃。
【问题讨论】:
-
对于我们这些精通C#但不会C的人,请描述一下这是做什么的。也很有帮助:您将在其中使用它的上下文。
-
它所做的就是:
d & 0xFFFF。它只是通过转换指针和其他类型来实现。我不知道为什么。 -
像这样的 C 代码(甚至不是那么迟钝!)让我很高兴他们没有在 C# 中包含#define 宏。 :)
-
d&0xffff 是正确的。此外,该宏有一个错误 - 它不能在小端和大端机器之间移植。
-
@Yoopergeek:你不需要宏来编写复杂的代码。
标签: c# c c-preprocessor