RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1148471
Accepted
arelive
arelive
Asked:2020-07-03 16:11:34 +0000 UTC2020-07-03 16:11:34 +0000 UTC 2020-07-03 16:11:34 +0000 UTC

如何通过代码知道目标 C++ 编译器是否支持 long long int 类型?

  • 772

我正在编写一个跨平台库。代码会被不同的编译器针对不同的平台编译,可能有些不支持64位整数。我想通过预处理器指令使用它们来处理代码的关键部分,但我该怎么做呢?有什么方法#ifdef __LONG_LONG_INT_T__可以知道编译器是否支持特定的原始类型?

c++
  • 2 2 个回答
  • 10 Views

2 个回答

  • Voted
  1. gbg
    2020-07-03T16:20:19Z2020-07-03T16:20:19Z

    从 开始,C++11语言标准中有保证长度的类型:

    Defined in header <cstdint>
    int8_t
    int16_t
    int32_t
    int64_t
      
    (optional)
     
    signed integer type with width of exactly 8, 16, 32 and 64 bits respectively
    with no padding bits and using 2's complement for negative values
    (provided only if the implementation directly supports the type)
    (typedef)
    int_fast8_t
    int_fast16_t
    int_fast32_t
    int_fast64_t
     
    fastest signed integer type with width of at least 8, 16, 32 and 64 bits respectively
    (typedef)
    int_least8_t
    int_least16_t
    int_least32_t
    int_least64_t
     
    smallest signed integer type with width of at least 8, 16, 32 and 64 bits respectively
    (typedef)
    intmax_t
     
    maximum-width signed integer type
    (typedef)
    intptr_t
      
    (optional)
     
    signed integer type capable of holding a pointer
    (typedef)
    uint8_t
    uint16_t
    uint32_t
    uint64_t
      
    (optional)
     
    unsigned integer type with width of exactly 8, 16, 32 and 64 bits respectively
    (provided only if the implementation directly supports the type)
    (typedef)
    uint_fast8_t
    uint_fast16_t
    uint_fast32_t
    uint_fast64_t
     
    fastest unsigned integer type with width of at least 8, 16, 32 and 64 bits respectively
    (typedef)
    uint_least8_t
    uint_least16_t
    uint_least32_t
    uint_least64_t
     
    smallest unsigned integer type with width of at least 8, 16, 32 and 64 bits respectively
    (typedef)
    uintmax_t
     
    maximum-width unsigned integer type
    (typedef)
    uintptr_t
      
    (optional)
     
    unsigned integer type capable of holding a pointer
    (typedef)
    

    在标准采用近 10 年后C++11,您需要使用编译器的情况C++98看起来极不可能,这本身就是一个值得讨论的理由。这就像在网络上支持 IE6 - 你可以,但它非常昂贵。

    • 3
  2. Best Answer
    eri
    2020-07-03T17:43:09Z2020-07-03T17:43:09Z

    通常这样的检查是由程序来完成的./configure。编写一个脚本,该脚本将创建一个包含很长声明和一个小测试的文件。该文件被编译(并在测试需要时执行)。如果测试失败,则将变量写入头文件或生成文件。

    对于 autoconf 项目,使用 AC_COMPILE_IFELSE 宏https://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Running-the-Compiler.html

    • 1

相关问题

  • 编译器和模板处理

  • 指针。找到最小数量

  • C++,关于枚举类对象初始化的问题

  • 函数中的二维数组

  • 无法使用默认构造函数创建类对象

  • C++ 和循环依赖

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何从列表中打印最大元素(str 类型)的长度?

    • 2 个回答
  • Marko Smith

    如何在 PyQT5 中清除 QFrame 的内容

    • 1 个回答
  • Marko Smith

    如何将具有特定字符的字符串拆分为两个不同的列表?

    • 2 个回答
  • Marko Smith

    导航栏活动元素

    • 1 个回答
  • Marko Smith

    是否可以将文本放入数组中?[关闭]

    • 1 个回答
  • Marko Smith

    如何一次用多个分隔符拆分字符串?

    • 1 个回答
  • Marko Smith

    如何通过 ClassPath 创建 InputStream?

    • 2 个回答
  • Marko Smith

    在一个查询中连接多个表

    • 1 个回答
  • Marko Smith

    对列表列表中的所有值求和

    • 3 个回答
  • Marko Smith

    如何对齐 string.Format 中的列?

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5