Yas*_*has 1 c++ struct compile-time memory-address
struct A {
int a;
.
.
.
int b;
} obj;
Run Code Online (Sandbox Code Playgroud)
const ptrdiff_t diff = &obj->b - &obj->a;
将diff始终包含一个常量,即使程序运行多次也不会改变?
将diff始终是积极的?
有没有办法在编译时获得这种差异?(手动计数除外)
的行为
const ptrdiff_t diff = &obj->b - &obj->a;
Run Code Online (Sandbox Code Playgroud)
是不确定的.如果它们指向同一数组中的元素,或者超过该数组末尾的元素,则只能减去两个指针.为此,标量被视为长度为1的数组.
让我感到惊讶的是,这是C++中一个鲜为人知的规则,C就此而言.
虽然我从来没有遇到过没有给你带来"明智"结果的编译器,但是不要像这样编写代码,因为你不是在编写可移植的C++.随着编译器优化技术变得越来越激进,您可以完全期望基于此的代码在未来中断.
| 归档时间: |
|
| 查看次数: |
85 次 |
| 最近记录: |