Visual Studio 2022中C程序内嵌汇编块报C2400错误求助
解决Visual Studio 2022内联汇编编译错误
错误原因
你的代码使用了GCC风格的内联汇编语法(包括%0占位符和约束声明:: r (target) : eax),但Visual Studio的__asm采用MASM(Microsoft Macro Assembler)语法,完全不支持GCC的这种扩展写法,因此触发语法错误。
修正后的代码
将代码改为MASM兼容的写法,直接在汇编块中访问变量:
__asm { mov eax, target ; 将目标地址加载到eax寄存器 call eax ; 调用eax指向的地址 }
额外说明
- 如果
target是函数指针类型,上述代码可直接工作,因为函数指针本身存储的就是目标函数的地址。 - 若你在64位编译环境下,Visual Studio对64位内联汇编支持有限(仅允许少数简单指令),此时建议将汇编逻辑单独写成
.asm文件,通过MASM编译后链接到项目中。
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

