不能采取什么样的LVALUE
Of what kind of lvalues can the address not be taken?
在这次会议上,斯科特·迈耶斯(Scott Meyers)首先说" lvalues通常是表达方式,您可以取"地址"。我一般都强调这个词:您无法接受地址的LVALUE是什么?(如果存在)。
编辑:请提供您的答案代码片段,这使情况变得更加清晰。
我认为Bitfields满足您的状况...我相信f.x
是一个LVALUE,但您不能接受它的地址。有趣的是,您也不能做auto & x = f.x
。
C 11第8.3.1节第4段:由于无法采用位景(9.6)的地址,因此指针永远不会指向位。<<<<<<<<<<
struct foo {
int x : 3;
int y : 3;
int z : 3;
};
int main() {
foo f;
f.x = 3;
}
我对这个其他想法什至不确定,但是标准表示您不允许您使用主函数。如果使用Main的地址是使用它,那么这也足够了。C 11 3.6.1第5段。
从我留下的评论中,我知道ti扩展了C 编译器,因此有一个名为cregister
的存储类,您无法接受该地址。(因为它是指物理寄存器,没有地址的概念)。
您可以从命名符号(例如与临时实例)中获取地址。这就是构成LVALUE的原因。
相关文章:
- 对RValue对象调用的LValue ref限定成员函数
- 返回的指向C++对象的链接是什么样的
- 这些是什么样的错误?即使我不在 Linux 上工作,我也遇到了 Linux 错误
- 为什么这些代码仍然使用 lvalue 函数?
- C++/SDL "initial value of reference to a non-const must be an lvalue"
- 编译错误:"lvalue required as left operand of assignment" 不确定原因
- "expression must be a modifiable lvalue"是什么意思?
- 在陈述"Implementation-defined"时,什么样的软件是"Implementation"的一部分?究竟什么是"Implementation"?
- 虚幻引擎使用什么样的反射?
- boost::ifind_first 会引发什么样的异常?
- 什么样的 GCC 优化可能会根据是否打印来更改双精度?
- VirtualAlloc/Ex 分配什么样的内存
- 我应该使用什么样的数据结构来实现UPGMA
- C++指针算术"lvalue required as left operand of assignment"错误
- 未执行lvalue到rvalue转换
- RVALUE参考与const lVALUE参考作为参数之间的混淆
- 声明规则定义了lvalue或prvalue
- 错误:无法将"std::istream {aka std::basic_istream<char>}"lvalue 绑定到"std::basic_istream&<char>&
- 与构造函数中rvalue结合的非const lvalue有关的错误
- 不能采取什么样的LVALUE