zoukankan      html  css  js  c++  java
  • 面试题——敲代码推断操作系统位数

    sizeof(void *)不是非常准确,跟编译器以及编译选项有关。

    所以以下用宏来推断。


    在windows上vc编译器会提前定义宏_WIN32和_WIN64
    msdn上列出的_WIN32和_WIN64





    当中_WIN32在32位系统上定义
    _WIN32 _WIN64在64位系统上均被定义



    在unix上gcc编译器会提前定义__GNUC__,__GNUC__ 的值表示gcc的版本号。

    通过gcc -dM -E test.c  命令能够用来查看gcc提前定义的宏。(test.c为随意c文件),编译器会列出全部提前定义宏。


    #include <stdio.h>
    
    main()
    {
    #if _WIN32 || _WIN64
    #if _WIN64
    #define ENVIRONMENT64
    #else
    #define ENVIRONMENT32
    #endif
    #endif
    
    #if __GNUC__
    #if __x86_64__ || __ppc64__
    #define ENVIRONMENT64
    #else
    #define ENVIRONMENT32
    #endif
    #endif
    
    #ifdef ENVIRONMENT64
    	printf("64
    ");
    #else ENVIRONMENT32
    	printf("32
    ");
    #endif
    }


  • 相关阅读:
    PHP获取时间or戳?
    滤镜灰CSS
    css3 文字渐变色
    除指定区域外点击任何地方隐藏DIV
    margin-top bug 处理方案
    基于Bootstrap好用的瀑布流
    初始数据库
    协程
    粘包及解决方案
    log日志的三种方式
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7090003.html
Copyright © 2011-2022 走看看