zoukankan      html  css  js  c++  java
  • C/C++跨平台程序注意

    判断操作系统

    通过使用内置的宏,可以进行操作系统判断

    • 1.windows下内置了宏 WIN32
    • 2.linux下内置宏 linux
    • 3.Solaris下内置宏 __sun

    编译器判断

    • VC编译器宏 _MSC_VER
    • GCC/G++编译器宏 __GNUC__
    • SunCC编译器宏 __SUNPRO_C和__SUNPRO_CC

    字符串比较

    在linux下使用strcasecmp 代替 window下的stricmp函数。可以使用以下代码解决兼容性

    1.  
      #ifdef linux
    2.  
      #include <strings.h>
    3.  
       
    4.  
      int stricmp(const char * s1,const char *s2)
    5.  
      {
    6.  
      return strcasecmp(s1,s2);
    7.  
      }
    8.  
      #endif

    sleep函数

    执行挂起一段时间,在VC中使用头文件#include <Windows.h>,为Sleep,单位为毫秒

    在gcc编译器中,头文件为#include <unistd.h>,为sleep,单位为秒,如果需要跟更精确,可以使用usleep.

    memset ,strlen, memcpy 在此作用域中尚未声明

    在程序移植到linux下是会出现memset在此作用于中尚未声明的错误,请包含进 #include <string.h>

    snprintf尚未声明

    在VS中,需要宏定义
      1.  
        #if _MSC_VER
      2.  
        #define snprintf _snprintf
      3.  
        #endif
  • 相关阅读:
    虚拟机Linux环境搭建所遇到的 问题
    Java-字节流读写文件
    [ZJOI2019]语言
    [CTSC2006]歌唱王国
    CF500F New Year Shopping
    CF438E The Child and Binary Tree
    [GXOI/GZOI2019]旧词
    [LNOI2014]LCA
    [CTSC2017]吉夫特
    [SDOI2014]旅行
  • 原文地址:https://www.cnblogs.com/lidabo/p/13878063.html
Copyright © 2011-2022 走看看