我正在使用netMF编程嵌入式设备。记忆很珍贵。我正在访问低级MCU寄存器我想将所有这些寄存器保存在某种类型的静态类中,以便于访问。并非所有常量都在给定的程序中使用。
是否已编译未使用的常量?
如果是这样,是否有更好的方式使它们不被编译并且程序大小更小,同时产生静态类的相同功能并获得intellisense是visual studio?
public static class DeviceRegisters
{
public const uint Tim9 = 0x40014000;
public const uint Tim8 = 0x40010400;
public const uint GPIOA_MODER = 0x40020000;
}
然后执行如下:
public class Thing
{
public thing(uint timerRegister, uint GPIOx_register)
{
//do stuff
Register thing = new Register(timerRegister);
//...
}
}
实例化如:
public class Program
{
public static Thing MyThing;
public static void Main()
{
MyThing = new Thing(DeviceRegisters.Tim9, DeviceRegisters.GPIOA_MODER);
//rest of program below
}
}
答案 0 :(得分:5)
我不确定你是否希望它们在编辑中丢失。由于常量为public
,因此可以在引用它的另一个程序集中使用它们。编译器不会对它们进行优化。
我很确定如果它们是 internal
并且未使用,编译器会在释放模式下删除它们。
错误,似乎即使在启用了优化代码选项的发布模式下,内部类中的私有常量也未被优化...
即使这样,uint
只需要32位。没那么担心。