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,...); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |