跨平台c/c++编码的预定义宏
来源:互联网 发布:js获取json第一个对象 编辑:程序博客网 时间:2024/05/21 17:48
c/c++中编写跨平台的代码时,难免需要根据不同的操作系统、编译器等准备不同的代码。
首先,不同平台中编译器预定义宏的参考资料 点击这里
其次,我本人仅关注以下平台:linux32/64-gcc, win32/64-vc, win32/64-mingw,这里给一个我自用的侦测上述平台的头文件
/** * @file - * @author jingqi * @date 2011-11-13 * @brief * see http://sourceforge.net/p/predef/wiki/Home/ * * @last-edit 2012-03-25 18:53:32 jingqi */#ifndef ___HEADFILE___6689E00A_B262_4C15_A826_19665AF8EC32_#define ___HEADFILE___6689E00A_B262_4C15_A826_19665AF8EC32_/** 操作系统类型 */#if defined(__WINDOWS__) || defined(_WIN32) || defined(WIN32) || defined(_WIN64) || defined(WIN64) || \ defined(__WIN32__) || defined(__TOS_WIN__)# define NUT_PLATFORM_OS_NAME "Windows"# define NUT_PLATFORM_OS_WINDOWS#elif defined(__linux__) || defined(linux) || defined(__linux) || defined(__LINUX__) || defined(LINUX) || \ defined(_LINUX)# define NUT_PLATFORM_OS_NAME "Linux"# define NUT_PLATFORM_OS_LINUX#else# define NUT_PLATFORM_OS_NAME "Unknown"# error unknown os#endif/** 指针位数 */#if defined(_WIN64) || defined(WIN64) || defined(__amd64__) || defined(__amd64) || defined(__LP64__) || \ defined(_LP64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(__ia64__) || \ defined(_IA64) || defined(__IA64__) || defined(__ia64) || defined(_M_IA64)# define NUT_PLATFORM_BITS_NAME "64"# define NUT_PLATFORM_BITS_64#elif defined(_WIN32) || defined(WIN32) || defined(__32BIT__) || defined(__ILP32__) || defined(_ILP32) || \ defined(i386) || defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) || \ defined(__i386) || defined(_M_IX86) || defined(__X86__) || defined(_X86_) || defined(__I86__)# define NUT_PLATFORM_BITS_NAME "32"# define NUT_PLATFORM_BITS_32#else# define NUT_PLATFORM_BITS_NAME "Unknown"# error unknown bits#endif/** 编译器 */#if defined(_MSC_VER)#define NUT_PLATFORM_CC_NAME "VC"#define NUT_PLATFORM_CC_VC#elif defined(__MINGW32__) || defined(__MINGW64__)#define NUT_PLATFORM_CC_NAME "MINGW"#define NUT_PLATFORM_CC_MINGW#define NUT_PLATFORM_CC_GCC#elif defined(__GNUG__) || defined(__GNUC__)#define NUT_PLATFORM_CC_NAME "GCC"#define NUT_PLATFORM_CC_GCC#else#define NUT_PLATFORM_CC_NAME "Unknown"# error unknown compiler#endif/** 模块API定义 */#if defined(NUT_PLATFORM_OS_WINDOWS)# define DLL_API extern "C" __declspec(dllexport)#else# define DLL_API extern "C"#endif/** 字符串 */#define NUT_PLATFORM_STR "OS: " NUT_PLATFORM_OS_NAME ", Bits: " NUT_PLATFORM_BITS_NAME ", Compiler: " NUT_PLATFORM_CC_NAME#endif /* head file guarder */
上述代码隶属于一个我自己的c++模板类库 nut ,可能博客以后列举的跨平台代码中会使用到上述宏。
- 跨平台c/c++编码的预定义宏
- 跨平台C/C++开发 预定义宏自动检测 源代码
- C 预定义的宏
- C预定义宏
- C 预定义宏
- C/C++的一些预定义宏
- C定义的预定义宏
- C/C++的一些预定义宏
- C/C++的一些预定义宏
- 标准C语言的预定义宏
- C/C++几个预定义的宏
- C标准预定义实用的宏
- C语言中预定义的宏
- C语言标准预定义的宏
- c语言预定义宏
- c/c++预定义宏
- C标准预定义宏
- c/c++预定义宏
- 虚析构函数
- iOS AvPlayer AvAudioPlayer音频的后台播放
- 发现FCG:一个代码生成器
- ar基本用法 ZZ
- 多线程的使用
- 跨平台c/c++编码的预定义宏
- 三个事和三个问题
- spring2.5整合ibatis2.3事务管理时遇到的问题以及需要的jar包
- 我的博客网站设计
- Android开源项目之 SlidingMenu
- 15.RPM软件包管理
- 16.YUM软件管理
- 关于ics lab8 performance中的rotate
- Linux工具大全_AsciiDoc