gpt4 book ai didi

c - 有没有一种优雅的方法来强制比较两个常量?

转载 作者:太空狗 更新时间:2023-10-29 16:23:51 26 4
gpt4 key购买 nike

众所周知,所有明智的编译器都会优化以下代码:

const int a = 3;
const int b = 42;

if (a == b)
{
do_something();
}

如果两个常量相同,则省略 if 并始终调用函数,如果它们不同,则省略整个 block 。

但是,在某些情况下,不要优化此代码很重要,因为程序本身可以在运行前进行修改。例如。二进制文件位于闪存中,可以被外部程序访问,当然两个 const 的地址是固定的。 (在嵌入式中有意义)。

我正在考虑使用 #pragma,但这不是 C 标准的一部分。

另一种方法是使用const volatile。这是否保证适用于所有符合标准的编译器?

最佳答案

是的,const volatile int a = 3; 完全符合您的要求,并且符合 C89 之后的标准(参见 C89 的第 3.5.3 节)。

This excellent answer详细描述了 const volatile,供在与您的情况类似的情况下使用。

关于c - 有没有一种优雅的方法来强制比较两个常量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16163111/

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