gpt4 book ai didi

c - 不使用#define 的全局常量

转载 作者:太空狗 更新时间:2023-10-29 16:37:30 27 4
gpt4 key购买 nike

好的,我希望在 .h 文件中定义一组内存地址作为常量,该文件由一堆 .c 文件使用(我们使用的是 C,而不是 C++)。我希望能够看到变量的 name 而不仅仅是在调试器中看到十六进制地址...所以我想将我当前拥有的 #defines 转换为全局范围内的常量.问题是,如果我这样定义它们:

const short int SOME_ADDRESS  =  0x0010

然后我得到了可怕的“多重声明”错误,因为我有多个使用同一个 .h 的 .c 文件。我想使用枚举,但这行不通,因为它默认输入整数(在我的系统上是 16 位...我需要更好地控制类型)。

我考虑过将所有地址放在一个结构中...但我无法(据我所知)在头文件中设置结构实例的默认值(我不想假设一个特定的 .c 文件首先使用该结构并在其他地方填充它。我真的很想在 .h 文件中定义常量)

当我开始时它看起来很简单,但我没有看到在头文件中定义全局可用的 short int 常量的好方法...有人知道这样做的方法吗?

谢谢!

最佳答案

使用extern声明头文件中的常量:

extern const short int SOME_ADDRESS;

然后在任何但只有一个 .c 文件中提供定义:

const short int SOME_ADDRESS = 0x0010;

关于c - 不使用#define 的全局常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9668385/

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