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

  • 相关阅读:
    Vue 中样式穿透 /deep/
    Vue 数据冻结 Object.freeze
    Vue 启动项目内存溢出
    Typora[ markdown ] 使用3之----- 语法高亮显示
    Typora[ markdown ] 使用2之-----空格显示
    手动创建mysql数据库的语句记录
    api不能自动注入条件的解决方法
    【WTM框架】查询列表显示正常,但是导出的时候查询条件不起作用的问题记录及解决方法
    WTM问题之“数据列表”控件出现横向的滚动条的解决方法
    树莓派docker无法限制内存Your kernel does not support memory limit capabilities or the cgroup is not mounted
  • 原文地址:https://www.cnblogs.com/xi52qian/p/2213408.html
Copyright © 2011-2022 走看看