オブジェクトのアドレスをg++の文字列定数として取得できますか?例:
struct s { } x;
の場合&x == 1234
、コードが必要"1234"
です。
編集:
文字列定数とは、コンパイル時またはリンク時にその定数文字列が必要であることを意味します。次のようなインラインアセンブリコードに埋め込む必要があります。
template < typename U >
struct T {
static int x;
void f () {
asm (".word " some-expression-containing-(&x));
}
};
プリプロセッサマクロを使ってマングルされた名前を作成する方法がわからないので、この質問をしました。
ソリューションは移植可能である必要はなく、g++で十分です。
ただし、アドレス自体はコンパイル時またはリンク時に認識されます。これは、アセンブリ出力を調べて、マングルされた名前をインラインアセンブリ命令に挿入するために機能するためです。