gpt4 book ai didi

c# - 未使用的常量是否仍被编译或优化掉?如果没有,如何实现?

转载 作者:行者123 更新时间:2023-11-30 14:50:31 26 4
gpt4 key购买 nike

我正在使用 netMF 对嵌入式设备进行编程。内存是宝贵的。我正在访问低级 MCU 寄存器 我想将所有这些寄存器保存在某种类型的静态类中,以便于访问。并非所有常量都在给定程序中使用。

未使用的常量是否编译?

如果是这样,是否有更好的方法使它们不被编译并且程序大小更小,同时产生与静态类相同的功能并获得 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
}

}

最佳答案

我不确定您是否希望它们在编译过程中丢失。由于常量是public,它们可以在引用它的另一个程序集中使用。编译器不会优化它们。

我很确定如果它们是 内部并且未使用,如果处于 Release模式,编译器会删除它们。

错误,似乎在启用优化代码选项的 Release模式下,甚至内部类中的私有(private)常量也没有被优化掉......

即便如此,uint 也只需要 32 位。不用担心太多。

关于c# - 未使用的常量是否仍被编译或优化掉?如果没有,如何实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36405348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com