在内联汇编中使用命名空间

时间:2011-09-04 15:09:35

标签: c++ visual-c++ assembly x86 inline-assembly

假设我有以下内联汇编代码......

_asm {
    fst  dword ptr [eax]mystruct1.mymember
    fstp dword ptr [ebx]mystruct2.mymember
}

...但不幸的是mystruct1和mystruct2都有相同的名称,并且位于不同的名称空间中。我试过这样......

_asm {
    fst  dword ptr [eax]mynamespace1::mystruct.mymember
    fstp dword ptr [ebx]mynamespace2::mystruct.mymember
}

......但它不起作用。是否有可能以某种方式指定命名空间而不使用c ++ using语句(这无论如何都无法工作,因为你不知何故需要更改操作之间使用的命名空间)? 不,我无法更改命名空间,结构或成员名称。

1 个答案:

答案 0 :(得分:2)

一种解决方案是创建一个引用并改为使用它:

MyStruct& ms = mynamespace1::mystruct;

_asm {
    fst  dword ptr [eax]ms.mymember
    fstp dword ptr [ebx]ms.mymember
}

我不知道你的情况是否可行。