我正在将一些用 C 编写的代码转换为 C#,因为我需要为我的嵌入式 C 项目编写支持应用程序。我正在进行一些繁重的布尔计算,因为它正在计算要进入硬件寄存器的值。
我在 C 项目和 C# 项目中都需要相同的定义,有很多定义,所以我需要用最少的努力进行转换。
这两个例子都非常简化
为什么我不能这样做?
#define MCLK (198656000)
#define MCLK_TICK_NS (1000000000 / MCLK);
转换成
private const uint MCLK = 198656000;
private const uint MCLK_TICK_NS = (1000000000 / MCLK);
正确的方法是什么?
为什么我不能这样做?
#define test (unsigned long)((unsigned long)0x1 << (unsigned long)31)
转换成
private const uint test = (uint)((uint)0x1 << (uint)31);
正确的方法是什么?
在第二个示例中,我收到错误
错误 1 常量值 '-2147483648' 无法转换为 'uint'(使用 'unchecked' 语法覆盖)
到底是use 'unchecked' syntax to override
什么?
为什么我要关闭检查来做一些完全合法的事情?