.net – IS C转换成MSIL?

前端之家收集整理的这篇文章主要介绍了.net – IS C转换成MSIL?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经很久以来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使用的未记录的低级库.

猜你在找的C&C++相关文章