__PTRDIFF_TYPE__的跨平台版本
Cross platform version of __PTRDIFF_TYPE__
在预处理过程中,是否有跨平台的方法来确定ptrdiff_t
与long
或long long
相同?
我知道__PTRDIFF_TYPE__
应该用gcc/g++给出类型,但它似乎没有在VC/VC++forWindows中定义。有比以下更好的方法吗?
#ifndef __PTRDIFF_TYPE__
# if _WIN64
# define __PTRDIFF_TYPE__ long long
# else
# define __PTRDIFF_TYPE__ long
# endif
#endif
如果在预处理过程中不可能,是否有编译时方法?我正在寻找一个非C++11解决方案,但如果你有一个非常好的现代解决方案,请随时分享!
编译时方法非常明显:
if (sizeof(ptrdiff_t) == sizeof(long))
或
if (sizeof(ptrdiff_t) == sizeof(long long))
TMK,对此没有可移植的定义。然而,这只是一个小障碍。只要一点点脚本,任何这种性质的编译时测试都可以使用autoconf和automake等标准工具轻松地转换为基于预处理器的测试。这些是成千上万的自由软件库和工具所使用的标准工具,用于这个精确的目的。
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 通过网络、跨平台传递std::变体是否安全
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我需要分发哪些版本的可再分发文件
- 如何跨平台将二进制资源构建到程序中?
- CV_OCL_RUN宏如何在OpenCV(版本3.4.5)的goodFeaturesToTrack实现中工作?
- 在运行时读取 libstdc++ 版本
- 如何声明一个可以在整个程序中使用的全局 2d 3d 4d .. 数组(堆版本)变量?
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- Vulkan SDK 版本 1.1.85.0 在 Kubuntu 18.10 上链接
- __PTRDIFF_TYPE__的跨平台版本
- 是否存在跨平台版本的win32 CopyFile
- 跨平台版本的ntohl()?-C++