为什么 gcc 会长时间发出警告?

Why does gcc have a warning for long long?

-Wlong-long gcc 警告的原因是什么?

来自 gcc 手册页:

-Wlong-long
       Warn if long long type is used.  This is enabled by either -Wpedantic or -Wtraditional in ISO C90 and C++98 modes.  To inhibit the warning messages, use -Wno-long-long.

据我了解,long long 至少需要 64 位(实际上它总是 64 位,至少对于今天的编译器而言)。 ISO C90 或 C++98 不是这种情况,还是有其他原因不使用 long long

我知道 <stdint.h> 类型,如 int64_t 和朋友,但一些不太老的编译器(例如 VS2005 和 Green Hills ARM 3.5)不提供 <stdint.h>,我认为 long long 对于那些和更新的工具链来说(至少)是 64 位。

ISO C90 和 C++98 中还没有 long long 类型。它仅在 ISO C99 和 C++11 中添加。

不过,GCC 在标准化之前将其作为扩展提供。