标签:
在代码中看到了#defined(__alpha),后面跟着一些系统设置,不明白__alpha这个宏代表什么。
上网搜了一圈,竟然没找到确切的说明。
后来,发现在2000年一个叫M.L.Y的人写了一个小程序,根据预定义的宏来判断运行环境。仔细一看,原来__alpha是DEC公司出的微处理器。
维基百科上的说明如下:
DEC Alpha
Alpha,也称为Alpha AXP,是由迪吉多公司开发的64位RISC指令集架构微处理器。最初由DEC公司制造,并被用于DEC自己的工作站和服务器中。作为VAX的后续被开发,支援VMS操作系统,如Digital UNIX。不久之后开放源代码的操作系统也可以在其上运行,如Linux和BSD。Microsoft 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.\n"); #endif #if defined(__MSDOS__) & /* Turbo C/BC */ \ (defined(__TURBOC__) | defined(__BORLANDC__)) printf("It is MS-DOS, Borland Turbo C / Borland C++.\n"); #endif #if __hppa & __hp3000s900 & __mpexl /* HP 3000 */ printf("It is HP 3000, MPE/iX, HP C/iX.\n"); #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.\n"); #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.\n"); #endif #if __OS400__ /* AS/400 */ printf("It is AS/400, OS/400.\n"); #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,...).\n"); #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.\n"); #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.\n"); #endif #if i386 & _I386 & unix & __HIGHC__ & _ATT4 /* NCR UNIX */ printf("It is NCR MP-RAS SVR4 UNIX System on Intel 386 or above.\n"); #endif return 0; } /* End of file */
标签:
原文地址:http://www.cnblogs.com/sirlipeng/p/4424916.html