gpt4 book ai didi

c - 有没有更好的方法在分配后将变量转换为 'const'?

转载 作者:太空狗 更新时间:2023-10-29 19:37:21 25 4
gpt4 key购买 nike

我总是使用 const 来保护不应分配的值。无论如何,在某些情况下,我可能需要初始化一个变量,然后在同一个函数中将其用作 const 值。例如:

void foo() {
int flags;
/* ... */
if (condition1)
flags |= 1;
/* .... */
if (conditionX)
flags |= Y;
/* .... */
// start using flags as a const value
const flags; // <<= I want something like this.
const int c_flags = flags; // <<= What I have to do. The naming is annoying.
/* ... */
}

有什么办法可以改善吗?可能是编码风格或高级语言功能。


来自@Potatoswatter:对于 gcc/clang 中的 C(gnu 风格,比如,-std=gnu11),可以使用语句表达式。

foo() {
const int flags = ({
int f = 0;
if (X) f |= Y;
/* ... update f ... */
f;
});
/* use the `const` flags */
}

最佳答案

考虑制作一个返回您想要的值的函数

const int flags = getFlags();

或者更面向对象的创建一个在构造函数中执行此操作的标志类。

const Flags flags(condition1, ...);

关于c - 有没有更好的方法在分配后将变量转换为 'const'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39991700/

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