我可以在 g++ 中将对象的地址作为字符串常量获取吗?示例:
struct s { } x;
如果 &x == 1234
,那么我的代码中需要 "1234"
。
编辑:
我所说的字符串常量是指我在编译或链接时需要那个常量字符串。我需要像这样将它嵌入到内联汇编代码中:
template < typename U >
struct T {
static int x;
void f () {
asm (".word " some-expression-containing-(&x));
}
};
我不知道如何使用预处理器宏来构建错位名称,所以我问了这个问题。
解决方案不需要可移植,g++ 就足够了。
地址本身在编译时或链接时是已知的,因为它可以检查汇编输出并将损坏的名称放入内联汇编指令中。
最佳答案
我想知道你为什么需要那个......但你可以这样做:
#include <sstream>
#include <cstddef> //for ptrdiff_t
....
stringstream ss;
ss << reinterpret_cast<ptrdiff_t>(&x);
ss.str()
现在包含您想要的字符串
编辑: 如果您想在编译时执行此操作...呃...我敢假设这是不可能的?
关于c++: 字符串常量的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4086901/