zoukankan      html  css  js  c++  java
  • defined(__alpha)是什么意思?

    在代码中看到了#defined(__alpha),后面跟着一些系统设置,不明白__alpha这个宏代表什么。

    上网搜了一圈,竟然没找到确切的说明。

    后来,发现在2000年一个叫M.L.Y的人写了一个小程序,根据预定义的宏来判断运行环境。仔细一看,原来__alpha是DEC公司出的微处理器。

    维基百科上的说明如下:

    DEC Alpha

    维基百科,自由的百科全书
     
     
    DEC Alpha AXP 21064 Microprocessor

    Alpha,也称为Alpha AXP,是由迪吉多公司开发的64位RISC指令集架构微处理器。最初由DEC公司制造,并被用于DEC自己的工作站服务器中。作为VAX的后续被开发,支援VMS操作系统,如Digital UNIX。不久之后开放源代码的操作系统也可以在其上运行,如LinuxBSDMicrosoft Windows支持这款处理器,直到Windows NT 4.0 SP6,但是从Windows 2000 beta3开始放弃了对Alpha的支援。

    1998年,随着DEC被一起卖给康柏。2001年,被康柏卖给Intel。同年,惠普收购康柏,继续开发基于Alpha处理器的产品到2004年。

    原来如此。随着时间的推移,这些已经消失的硬件,也淡出了人们的视野了。

    下面是M.L.Y写的小程序,遇到不认识的宏,可以来找找看。

    /* CCOS.C --- Test the C language compiler and OS by predefined symbols */ 
    /* M.L.Y  2000.12 */ 
    
    #include <stdio.h> 
    
    int  main() 
    { 
    #if defined(MSDOS) & defined(_MSC_VER)           /* Microsoft C */ 
      printf("It is MS-DOS, Microsoft C.
    "); 
    #endif 
    #if defined(__MSDOS__) &                         /* Turbo C/BC */     
       (defined(__TURBOC__) | defined(__BORLANDC__)) 
      printf("It is MS-DOS, Borland Turbo C / Borland C++.
    "); 
    #endif 
    #if __hppa & __hp3000s900 & __mpexl              /* HP 3000 */ 
      printf("It is HP 3000, MPE/iX, HP C/iX.
    "); 
    #endif 
    #if vax & VAX & vms & VMS                        /* DEC VAX */        
      & vaxc & VAXC & vax11c & VAX11C                                     
      & defined(vms_version) & defined(VMS_VERSION) 
      printf("It is DEC VAX, VMS, VAX 11 C.
    "); 
    #endif 
    #if __vms & __VMS                                /* DEC Alpha */      
      & __vaxc & __VAXC & __vax11c & __VAX11C                             
      & __DECC & defined(__vms_version) & defined(__VMS_VERSION)          
      & __Alpha_AXP & __Alpha & __ALPHA & __32BITS 
      printf("It is DEC Alpha AXP, Open VMS, DEC C.
    "); 
    #endif 
    #if __OS400__                                    /* AS/400 */ 
      printf("It is AS/400, OS/400.
    "); 
    #endif 
    #if mips & __mips & host_mips & __host_mips      /* Tandem */         
      & unix & __unix & __nonstopux                                       
      & SYSTYPE_SVR4 & _SYSTYPE_SVR4 & LANGUAGE_C & _LANGUAGE_C 
      printf("It is Tandem(puma S4000 mips,...), NonStop-UX/V(Rel4.2MP,...).
    "); 
    #endif 
    #if (hp9000s200 | hp9000s300 | __hp9000s300      /* HP 9000 */        
       | hp9000s500 | hp9000s800 | __hp9000s800 | hp9000ipc)              
       & (hppa | __hppa) & (_PA_RISC1_0 | _PA_RISC1_1)                    
       & (unix | __unix) & (hpux | __hpux) 
      printf("It is HP 9000, HP-UX.
    "); 
    #endif 
    #if i386 & M_I386 & unix & __unix & M_UNIX       /* SCO UNIX */       
      & (_SCO_COFF | _SCO_ELF) 
      printf("It is SCO UNIX(SCO OpenServer) on Intel 386 or above.
    "); 
    #endif 
    #if i386 & _I386 & unix & __HIGHC__ & _ATT4      /* NCR UNIX */ 
      printf("It is NCR MP-RAS SVR4 UNIX System on Intel 386 or above.
    "); 
    #endif 
      return 0; 
    } 
    
    /* End of file */ 


  • 相关阅读:
    centos Cannot allocate memory for the buffer pool
    hive query with field is json
    doubleclick video notes
    shell command
    最简单好用的免费录屏软件
    mysql export query result
    浏览器-前端网络
    vue-main.js中new vue()的解析
    webpack-从零搭建vuecli环境
    【js重学系列】call-apply-bind
  • 原文地址:https://www.cnblogs.com/sirlipeng/p/4424916.html
Copyright © 2011-2022 走看看