加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

.net – IS C转换成MSIL?

发布时间:2020-12-16 05:58:57 所属栏目:百科 来源:网络整理
导读:我已经很久以来C#和.Net开发人员,一直在玩c的想法. 我一直在考虑的一个主要原因是,C可以超过使用.Net框架的应用程序.但是,如果我在Visual Studio中编写一个C应用程序,和/或在C应用程序中引用.Net库,那么C是在MSIL中转换的(就像C#)一样,我是否正确地假设,我会
我已经很久以来C#和.Net开发人员,一直在玩c的想法.

我一直在考虑的一个主要原因是,C可以超过使用.Net框架的应用程序.但是,如果我在Visual Studio中编写一个C应用程序,和/或在C应用程序中引用.Net库,那么C是在MSIL中转换的(就像C#)一样,我是否正确地假设,我会放弃任何好处从编码呢?

所以我的问题是这样的:应用程序的C组件是否以“传统”的方式编译.Net程序集,或者被编入MSIL?

解决方法

那比这更复杂一些.
实际上有两个完全不同版本的.NET支持C.

旧的,C的托管扩展是Visual C 2002/2003中唯一可用的选项.它可用于较新的编译器,选项为/ clr:oldSyntax.它有点笨拙,因为它很难与标准C集成,所以所有新的关键字(还有很多)都带有双重下划线等.这个编译器生成的代码是本机和MSIL代码的混合,被称为IJW“只是工作“.

新的C/C++LI,是Visual C 2005和更新的一种干净的新语言.最重要的是,它支持几种代码生成模式.
/ clr选项再次生成本机和MSIL代码的IJW混合.
/ clr:纯管理集合中的纯粹结果,尽管它可能将本机类型转换为相应的.net结构.因此,代码可能不是类型安全的,可以使用指针算术,很像C#with / unsafe.
最严格的选项是/ clr:safe,它产生类型安全,可验证的仅限MSIL的程序集,就像C#编译器一样(没有/不安全的).

有关MC和C/C++LI的区别,请参见wikipedia.

有关编译器开关的说明,请参见MSDN.

PS. .NET字节代码称为MSIL(Microsoft Intermediate Language)或CIL(Common Intermediate Language). MIL可以支持媒体集成层,即WPF和Vista Desktop Window Manager使用的未记录的低级库.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读