gpt4 book ai didi

c++ - "__cplusplus"宏扩展成什么?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:17:19 25 4
gpt4 key购买 nike

  • C++ 宏 __cplusplus 包含和扩展到什么?

  • 即使在最古老的 C++ 实现中,宏 __cplusplus 是否始终包含并扩展为一个数字值?

  • 使用#if __cplusplus是否安全还是我们应该使用 #ifdef __cplusplus


结论(稍后添加)

来自评论和接受的答案:

  • __cplusplus 扩展为代表标准版本的数字,90 年代初的准标准 C++ 除外(它简单地扩展为 1)。

  • 是的,即使是在最古老的 C++ 实现中(扩展为数值)。

  • 不,#ifdef 应该在头文件与 C 语言共享时使用(因为某些 C 编译器会在 #if 检查未定义的宏时发出警告) .

最佳答案

是的,它总是扩展为数值,其含义是正在使用的 C++ 标准版本。根据cppreference page , __cplusplus 宏应该扩展为:

  • 199711L (until C++11),
  • 201103L (C++11),
  • 201402L (C++14),
  • 201703L (C++17),
  • 202002L (C++20)

#if#ifdef 指令之间的区别在于,#ifdef 应该用于检查给定的宏是否已被定义为允许一段待编译的代码。

另一方面,#if (#else, #elif) 指令可用于检查指定条件是否满足(只是像典型的 if 条件)。

关于c++ - "__cplusplus"宏扩展成什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49915424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com