您的位置:首页 > 运维架构 > Linux

一些tip,如何检测是否安装.net及其版本

2011-05-12 10:18 120 查看
http://blog.csdn.net/trcj1/archive/2009/08/29/4496935.aspx摘取了一部分

 

字节对齐
    #program pack(x)    //x=1,2,4,8,16...默认为8
    每当一个结构的成员变量要定位时,取该成员变量的长度与x中间的最小值作为标准,该成员变量的偏移量(offset)必须能够被该值整除。当所有的成员都定位完成后,再次取该结构体中最宽成员的长度与x中间的最小值作为标准,整个结构体的大小必须能够被该值整除。

 .NET环境编程tip

    任何.NET环境下编写的程序都需要安装.NET框架才能运行(注意默认情况下C++语言编写的程序不需要.NET框架的CLR即运行,通过制定一个新的开关,C++编译器也能够产生出需要CLR才能执行的托管模块),我们可以通过再%windir%/system32目录下查找MSCorEE.dll文件来判断该机器是否安装了.NET框架。如果存在则证明已安装。如果想确定安装了哪些版本的.NET框架,可以查看如下注册表键下的子键:

    HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETFramework/policy

 C VS .NET

    C语言运行时堆分配内存基于链表,.NET CLR托管堆分配则基于连续的内存块,故.NET分配对象要比C快得多;
    .NET在垃圾回收后要用到memcpy函数压缩托管堆,所以会给应用程序带来不小的性能损伤,其性能比C运行时的堆的性能低。

 Win32平台下的微软C编译器(cl.exe for 80x86)在默认情况下采用如下的对齐规则

    任何基本数据类型T的对齐模数就是T的大小,即sizeof(T)。比如对于double类型(8字节),就要求该类型数据的地址总是8的倍数,而char类型数据(1字节)则可以从任何一个地址开始。Linux下的GCC奉行的是另外一套规则(在资料中查得,并未验证,如错误请指正):任何2字节大小(包括单字节吗?)的数据类型(比如short)的对齐模数是2,而其它所有超过2字节的数据类型(比如long,double)都以4为对齐模数。

 

猜测:

     DX的版本检查是否可以通过在%windir%/system32下查找某个特殊的dll来进实现呢?

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/trcj1/archive/2009/08/29/4496935.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息