【发布时间】:2012-07-13 03:27:25
【问题描述】:
如何获取变量的属性?
例子:
int a = 5;
....
....
isConstant(a); //Prints "no!" if 'a' is not a constant at this time.
isRegister(a); //Prints "yes!" if 'a' is a register at this time.important.
isVolatile(a); //Prints "trusted" if 'a' is volatile.
isLocal(a); //If it is temporary.
isStatic(a); //Static?
我只读过关于改变一个变量的常数而不是其他的。
【问题讨论】:
-
在 C++ 中可能不可能。
-
大部分是不可能的(而且大部分也是一文不值)。
-
如果您解释为什么您需要知道这一点,它可能也会有所帮助。您所要求的自然不是 C++ 的一部分,但您的总体目标可能可以通过其他方式实现。
-
鉴于 'register' 无论如何都是一个建议(即编译器有权(并且可能会)忽略它),您能够找出寄存器中是否确实存在某些内容的机会是相当低。我怀疑 isLocal 和 isStatic 可以通过一些讨厌的地址检查来解决您的 sn-p 建议“isRegister”很重要,在这种情况下,您的设计很可能存在相当大的问题
-
isStatic有点模棱两可——你想到了static的哪个含义?