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

_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语句的情况下以某种方式指定 namespace (无论如何都将不起作用,因为您将需要在操作之间更改使用的 namespace )?
不,我不能更改 namespace ,结构或成员名称。

最佳答案

一种解决方案是创建引用,并使用该引用:

MyStruct& ms = mynamespace1::mystruct;

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

我不知道这是否可行。

07-24 09:45