gpt4 book ai didi

c - 在 C 中使用 const struct 而不是定义分组配置参数有效吗?

转载 作者:太空宇宙 更新时间:2023-11-04 04:51:17 26 4
gpt4 key购买 nike

我正在考虑使用全局常量结构来管理某些子系统的配置。这意味着我想使用类似的东西:

const struct SystemConfig {
.channels = 5,
.mode = NORMAL_MODE,
} SYSTEM_CONFIG;

然后像往常一样在我的代码中使用它:

...
numberOfChannels = SYSTEM_CONFIG.channels;
mode = SYSTEM_CONFIG.mode;
...

我想使用这种方法来跳过#define

我的问题是,考虑到一切都是常量,编译器是否会意识到这一点并在编译时用它们各自的值替换这些值?

编辑:很抱歉同时标记了 C 和 C++,它现在已修复,我的问题仅与 C 相关。我使用的编译器是带有 ARM Cortex-M4 目标的 GCC。

最佳答案

我会使用 static const 这样你的结构在链接级别是不可见的。例如:

static const unsigned int channels = 5;
unsigned numberOfChannels = channels;

肯定会被编译器优化。所以我不明白为什么任何现代编译器也无法优化您的示例。

如果是我,我会找到编译器选项来输出它正在放置的代码。这是一个有趣的练习。

关于c - 在 C 中使用 const struct 而不是定义分组配置参数有效吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14896451/

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