【问题标题】:Is __CHAR_BIT__ macro predefined for MSVC compiler?是否为 MSVC 编译器预定义了 __CHAR_BIT__ 宏?
【发布时间】:2020-05-20 06:50:33
【问题描述】:

是否为 MSVC 编译器预定义了 __CHAR_BIT__ 宏?我如何知道编译器可用的预定义宏列表?

【问题讨论】:

  • __CHAR_BIT__ 不是由 MSVC 预定义的,也不是 (AFAIK) 任何其他编译器。但是是标准保留供实现使用的标识符,即使任何特定实现不使用它。 CHAR_BIT 在标准头文件 <climits> 和(为了 C 兼容性)<limits.h> 中定义,并带有实现定义的值。阅读文档(或标准)以查找标准中指定的预定义宏。阅读编译器的文档以查找它定义的宏。
  • 我认为这是一个答案@Peter

标签: c++ macros


【解决方案1】:

编译器的文档会给出一个预定义宏的列表。对于 MSVC,它是 here。只要您包含适当的标头(在某些情况下,如果您包含其他标头),标准中指定的所有宏仍然可用。

对于__CHAR_BIT__,这不是标准的一部分; CHAR_BIT 宏是,并且在标头 <climits> 中声明。我相当怀疑 MSVC 是否有 CHAR_BIT__CHAR_BIT__ 作为预定义的宏:该编译器主要使用预定义的宏来提供对编译标志的访问,而是直接在头文件中定义与体系结构相关的宏(当然,使用预定义的宏来确定是什么架构)。

我想检查宏是否是预定义的,而不是在标题中定义,您只需在包含任何标题之前检查。不过,我想不出你为什么要这样做。

【讨论】:

    猜你喜欢
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2010-12-28
    • 2021-07-29
    • 1970-01-01
    相关资源
    最近更新 更多