使用与平台有关的C语言函数,可能会使得程序不具有可移植性。比如Socket编程、多线程编程等是与平台有关的。

若想将程序做成平台无关的就需要用到与平台相关的条件编译

下面转自:http://blog.csdn.net/immcss/article/details/3881827

    • 编译器
      • 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/NT4.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
      • Internet Explorer的Ver … _WIN32_IE
    • Cygwin
      • Cygwin
        #ifdef __CYGWIN__
      • 32bit版Cygwin(现在好像还没有64bit版)
        #ifdef __CYGWIN32__
      • MinGW(-mno-cygwin指定)
        #ifdef __MINGW32__

程序测试:

 #include<stdio.h>
int main()
{
printf("The OS :");
#ifdef __linux
printf("Linux\n");
#endif #ifdef _WIN32
printf("win 32\n");
#endif #ifdef _WIN64
printf("win 64\n");
#endif printf("The Compiler : ");
#ifdef __GNUC__
printf("GCC\n");
#endif
#ifdef _MSC_VER
printf("VC\n");
#endif
printf("Test Over!!!");
return ;
}

执行结果:

win7_32 CodeBlocks

Ubuntu_32 gcc

最新文章

  1. codeforces A. Candy Bags 解题报告
  2. VPython—旋转坐标系
  3. SwiftyJSON 中文介绍
  4. 基于MapReduce的关系代数运算(1)
  5. 微支付开发(.net)
  6. Git分支管理的基本操作
  7. 通过yum升级CentOS/RHEL最小化安装
  8. A Simple Math Problem(HDU 1757 构造矩阵)
  9. hdu 1263 水果
  10. java设计模式之四建造者模式(Builder)
  11. 小箭头的写法,z-index在ie7显示混乱问题
  12. this final 关键字
  13. 向Oracle数据库插入中文乱码解决方法
  14. Kafka学习资料
  15. iOS程序员 如何做到升职加薪,5年 开发经验 码农 笔记送给你!
  16. php中类继承和接口继承的对比
  17. Docker CE的安装 与镜像加速
  18. codevs 2804 最大最小数质因数
  19. 更加灵活的编写控制层的方法____结合eval函数
  20. Linux常用命令(三)————创建+删除+设置权限

热门文章

  1. CSUOJ 1726 你经历过绝望吗?两次!BFS+优先队列
  2. CSUOJ 1005 Binary Search Tree analog
  3. spring websocket集群问题的简单记录
  4. JXOI2017-2018 解题报告
  5. Counter Strike HDU 2443 逆序对数
  6. 第4天:Django的cookie和session
  7. CF893F Subtree Minimum Query 主席树
  8. POJ 1469 COURSES 二分图最大匹配 二分图
  9. 谁是最快的Go Web框架
  10. .NET面试宝典-基础