gnu++ 98模式也支持long long类型

在 gnu++98(即编译参数 -std=gnu++98)模式下,可以畅通无阻地使用 long long 类型。

这背后的逻辑和 gnu89 是完全一致的。可以这样拆解来看:

gnu++98 = C++98 官方标准 + GNU 独有扩展

  1. 官方标准的缺失: 纯正的 C++98 标准中确实没有 long long。
  2. GNU 扩展的补足: GCC 编译器家族非常早就把 long long(64位整型)作为自己的"看家扩展"加到了编译器里,不仅给 C 语言用,也给 C++ 用。
  3. 默认方言: 当你开启 gnu++98 时,你实际上是在告诉编译器:"请以 C++98 为基础,并且允许使用所有的 GNU 扩展功能 "。因此,作为核心扩展之一的 long long 自然被完美支持。

严格模式与 GNU 模式的对比体验

为了让你更直观地感受,如果你在代码里写了 long long a = 10;,不同的编译参数会有不同的表现:

  • 使用 -std=gnu++98(早期 GCC 的默认 C++ 模式):
    正常编译通过,没有任何警告,完美运行。
  • 使用 -std=c++98 -pedantic(开启纯正 C++98 严格检查):
    编译能通过,但编译器会无情地甩出一个警告(Warning):

warning: 'long long' is a C++11 extension [-Wlong-long]

总结来说 ,只要带有 gnu 前缀的编译标准(如 gnu89, gnu99, gnu++98),编译器都会大开绿灯,把你当做"自家人",让你舒舒服服地使用 long long 这个 GNU 早就造好的轮子,而不必等到 C++11 官方颁布许可。

相关推荐
小羊没烦恼!2 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int3 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
CoderYanger3 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读3 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
CCCCCCCCharlie3 天前
Linux进程控制四大核心操作
linux·开发语言
Brilliantwxx3 天前
【STM32】 SPI Flash 驱动开发实战:阻塞模式驱动 W25Q64(含工程代码)
开发语言·stm32·单片机·嵌入式硬件