zoukankan      html  css  js  c++  java
  • 编译器,CPU和操作系统的宏

    编译器

    GCC
    #ifdef  __GNUC__

    #if __GNUC__ >= 3 // GCC3.0以上

    Visual C++
    #ifdef  _MSC_VER(非VC编译器很多地方也有定义)

    #if _MSC_VER >=1000 // VC++4.0以上

    #if _MSC_VER >=1100 // VC++5.0以上

    #if _MSC_VER >=1200 // VC++6.0以上

    #if _MSC_VER >=1300 // VC2003以上

    #if _MSC_VER >=1400 // VC2005以上

    Borland  C++

    #ifdef  __BORLANDC__

    UNIX

    UNIX
    #ifdef  __unix
    or
    #ifdef  __unix__

    Linux
    #ifdef  __linux
    or
    #ifdef  __linux__

    FreeBSD
    #ifdef  __FreeBSD__

    NetBSD
    #ifdef  __NetBSD__

    Windows

    32bit
    #ifdef  _WIN32(或者WIN32)

    64bit
    #ifdef  _WIN64

    GUI  App
    #ifdef  _WINDOWS 

    CUI  App
    #ifdef  _CONSOLE

    Windows的Ver … WINVER
    PC机Windows(95/98/Me/NT/2000/XP/Vista)和Windows CE都定义了

    #if (WINVER >= 0x030a) // Windows 3.1以上

    #if (WINVER >= 0x0400) // Windows 95/NT 4.0以上

    #if (WINVER >= 0x0410) // Windows 98以上

    #if (WINVER >= 0x0500) // Windows Me/2000以上

    #if (WINVER >= 0x0501) // Windows XP以上

    #if (WINVER >= 0x0600) // Windows Vista以上

    Windows 95/98/Me的Ver … _WIN32_WINDOWS

    MFC App、PC机上(Windows CE没有定义)
    #ifdef  _WIN32_WINDOWS

    #if (_WIN32_WINDOWS >= 0x0400) // Windows 95以上

    #if (_WIN32_WINDOWS >= 0x0410) // Windows 98以上

    #if (_WIN32_WINDOWS >= 0x0500) // Windows Me以上

    Windows NT 的Ver … _WIN32_WINNT

    #if (_WIN32_WINNT  >= 0x0500) // Windows 2000以上

    #if (_WIN32_WINNT  >= 0x0501) // Windows XP以上

    #if (_WIN32_WINNT  >= 0x0600) // Windows Vista以上

    Windows CE(PocketPC
    #ifdef  _WIN32_WCE

    Windows CE … WINCEOSVER

    Windows CE
    WCE_IF

    Int ernet Explorer的Ver … _WIN32_IE 

    Cygwin

    Cygwin

    #ifdef  __CYGWIN__

    32bit版Cygwin(现在好像还没有64bit版)
    #ifdef  __CYGWIN32__

    MinGW(-mno-cygwin指定)
    #ifdef  __MINGW32__

    相信很多人都有这么一个经历,想宏定义某一个值,而这个值随着编译器选择的CPU不同而有所不同,但却苦于文档中没有关于CPU宏的说明.所以很多朋友的做法往往做法是自定以多个宏用来区分CPU的类型.其实大可不必,编译器在CPU不同时确实定义了相应的宏,只不过这个在文档中没有说明而已.
        CPU Type      Macro
         x86                _X86_
         mips             _MIPS_
         arm               _ARM_
         sh3               _SH3_
       根据不同的CPU定义不同的宏数值,代码可如此书写:
       #ifdef _X86_
         #define REG_NUM  8
       #endif
       #ifdef _MIPS_
         #define REG_NUM  12
       #endif
       其实最为实用的,还是根据不同的CPU类型选择不同的lib库链接,例如:
       #ifdef _X86_
         #pragma comment (lib,".//lib//X86em//Strmiids.lib")
       #endif
       #ifdef _MIPS_
         #pragma comment (lib,".//lib//MIPSII//Strmiids.lib")
       #endif

  • 相关阅读:
    VScode 修改中文字体
    missing KW_END at ')' near '<EOF>'
    SQL inner join, join, left join, right join, full outer join
    SQL字符替换函数translater, replace
    SQL COOKBOOK SQL经典实例代码 笔记第一章代码
    sqlcook sql经典实例 emp dept 创建语句
    dateutil 2.5.0 is the minimum required version python
    安装postgresql后找不到服务 postgresql service
    Postgres psql: 致命错误: 角色 "postgres" 不存在
    【西北师大-2108Java】第十六次作业成绩汇总
  • 原文地址:https://www.cnblogs.com/xi52qian/p/2213408.html
Copyright © 2011-2022 走看看