加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 在赋值后是否有更好的方法将变量强制转换为’const’?

发布时间:2020-12-16 10:44:37 所属栏目:百科 来源:网络整理
导读:我总是使用const来保护不应该分配的值.无论如何,在某些情况下,我可能需要初始化变量,然后在同一个函数中将其用作const值.例如: void foo() { int flags; /* ... */ if (condition1) flags |= 1; /* .... */ if (conditionX) flags |= Y; /* .... */ // star
我总是使用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),可以使用Statement Expression.

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,...);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读