C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了.net – C/C++LI中的内联汇编大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么C/C++LI编译器可以编译此代码

using namespace System;

inline void Assembly(){

__asm{
mov eax,5
}

}

int main(array<System::string ^> ^args)
{

    Assembly();
    Console::WriteLine(L"Hello World");
    return 0;
}

并不能为这一个

using namespace System;


int main(array<System::string ^> ^args)
{

__asm{
mov eax,5
}
    Console::WriteLine(L"Hello World");
    return 0;
}

解决方法

C/C++LI编译器支持生成机器代码和Il.它将为没有/ clr生效的任何代码或者使用#pragma managed(push,off)和#pragma managed(pop)括起来的函数生成机器代码.或者必须编译为机器代码函数,因为它们包含无法转换为IL的代码.像_asm一样,请注意第一个片段的C4793警告.使用#pragma managed抑制警告.这样的代码当然不能使用任何托管类型.

代码生成单元是一个功能.什么不能工作是一个需要两者的功能.您的main()函数必须编译为IL,因为它使用托管类型.该功能当然不会内联.

大佬总结

以上是大佬教程为你收集整理的.net – C/C++LI中的内联汇编全部内容,希望文章能够帮你解决.net – C/C++LI中的内联汇编所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。