我需要在g ++内联汇编中使用模板类成员的地址(作为编译时常量值)。有可能表达这个吗? (我认为我需要名称为T<U>::x
)。
template < typename U >
struct T {
static int x;
};
template < typename U >
void f () {
asm ("somecommand T<U>::x");
}
答案 0 :(得分:1)
假设你使用的是linux,你可以使用nm。
nm --demangle foo.o为您提供符号的demangled名称 nm --no-demangle foo.o为您提供符号的错位名称。
然后,您可以比较这两个文件的输出,以便将损坏的名称与解码名称相匹配。
答案 1 :(得分:0)
我使用objdump
从引用它的对象中提取受损的名称(你可以使用c++filt
向另一个方向移动,但我知道没有独立的程序会给出错误的名字;您可以使用规范http://www.codesourcery.com/public/cxx-abi/abi.html并创建一个缩放器或手动修改,但这可能是矫枉过正的。)