c++: 字符串常量的地址

标签 c++ string constants memory-address

我可以在 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/

相关文章:

java - 私有(private)静态最终字符串或私有(private)最终字符串

c++ - 常量的C++最佳做法

c++ - 你如何将迭代器作为 hash_map 的键?

c++ - ToUnicode 调用 ToUnicodeEx 吗? ToUnicodeEx 在内核空间线程上改变了什么?

C++减少字符串内存使用

C - 反转字符串数组中单词的顺序

c++ - 如何将 OpenGL 数学 (GLM) 添加到 Xcode 4?

c# - 通过asp.net从控制台读取输出

C计算字符串中某个字符出现的次数

c++ - C++ 中 const 声明的区别