当前位置: 首页 > news >正文

根据long long类型判断c、c++遵循的标准版本

一、

1, GCC 4.4.5 默认的 C++ 方言不是 C++11。

2,

源码里 64 位类型定义是老式 typedef:

-ordinary.hpp:42:typedefunsignedlonglonguint64;-ordinary.hpp:43:typedeflonglongint64;-std_tp.h:21:typedeflonglongint8;
没有使用 C++11 的 <cstdint>、std::int64_t 等写法。

3, 不能因为在.h文件就判断是c语言而不是c++

typedeflonglongint8;

这是一个类型定义声明,不是“语句”。它本身既可以被 C 编译器解析,也可以被 C++ 编译器解析;关键看哪个源文件 #include 了它。

在当前项目里,std_tp.h:21 虽然后缀是 .h,但主要被 C++ 代码路径使用,例如 当前 模块的源文件都是 .cpp,Makefile 用的是 g++ 编译:

.cpp.o:; $(CXX) -c $(CFLAGS) $< -o $@

所以这行在当前项目构建中应理解为:被 g++ 按 C++ 方言编译,历史意图大概率是 gnu++98 下的 GNU C++ 扩展。

如果它被 .c 文件包含,并用 GCC 的 gnu89 模式编译,那么它也能成立,但那时才叫 GNU C 扩展。

总结:

typedef long long mint8;

在当前项目里:主要是 GNU++98/C++ 侧用法。
不是因为它在 .h 文件里,就自动属于 GNU C。

二、

CFLAGS中没有-std=选项。这意味着编译器使用其默认标准:

  • C++ 文件(.cpp/.cxx)用g++编译,默认为 GNU C++98(即-std=gnu++98)——这是 GCC 4.x 系列的默认值,等价于 C++98 + GNU 扩展。
  • C 文件(.c)用gcc编译,默认为 GNU C89(即-std=gnu89)。

long long的使用依据是GNU 扩展gnu89/gnu++98),而非 C++11 标准。

具体来说:

  • long long在 C99 / C++11 才被正式纳入标准。
  • 但 GCC 作为扩展,在gnu89gnu++98模式下也支持long long,只是在严格标准模式(-std=c89/-std=c++98,无gnu前缀)下会报警告。
  • 项目用的g++ -m64(无-std=),默认就是gnu++98,所以long long能编译通过,是靠 GNU 扩展,而不是 C++11。

验证点:makefile里有-D__GCC_4_4_5__宏,说明本项目明确针对 GCC 4.4.5,该版本默认标准正是gnu++98,早于 C++11(2011 年发布)。


long long是 C 语言的 还是 C++ 的语句吗?

只有 3 处,全部是typedef类型别名定义,这是 C 和 C++ 共用的语法,两者都支持。

具体看:

文件语句所在文件类型
std_tp.h`typedef long long int8;.h头文件,C 风格
ordinary.hpp`typedef unsigned long long uint64;.hpp头文件,C++
ordinary.hpptypedef long long int64;.hpp头文件,C++

结论:typedef long long是纯 C 风格写法,C 和 C++ 都完全相同,看不出 C++ 特有语法。项目里没有用 C++11 的int64_t(来自<cstdint>)或std::int64_t,而是手动typedef了自己的别名(mint8/my_int64_t),这是典型的老式 C/C++ 跨平台移植写法,与 GNU C89 扩展的风格一致。


http://www.jsqmd.com/news/1134490/

相关文章:

  • JSP 9大内置对象实战:request、session、application 3大作用域数据存取与线程安全
  • ObjToSchematic:让3D模型在Minecraft世界完美重生的魔法工具
  • 微信支付服务商模式 V3 API 实战:Spring Boot 集成 1 个 APP 对接 N 个子商户收款
  • OpenAI Codex CLI 十大必装技能:从代码补全到智能开发工作流
  • Frida Hook Native 层:无导出函数偏移计算与 Interceptor 实战,覆盖 2 种寻址场景
  • WPS-Zotero插件:5分钟搞定跨平台文献引用的终极解决方案
  • 3个技巧:如何用DriverStore Explorer彻底解决Windows驱动堆积问题
  • ChatGPT API成本优化实战:从计费原理到架构级省钱策略
  • 淘宝开放平台奇门接口 Java 验签实战:Spring Boot 接收 XML 请求与 3 种签名算法解析
  • 抖音无水印批量下载工具终极指南:免费获取高清视频的完整解决方案
  • WMIC命令替代方案:PowerShell 7与CIM/WMI查询获取设备信息的3种新方法
  • 数字图像处理 2.6 节:图像采样量化实战,Python 实现 8-bit 灰度图转换与伪轮廓分析
  • Java+Vue+SpringBoot+MySQL课程作业管理系统:毕业设计实战部署与二次开发指南
  • 【游戏开发实战】Windows一站式编译tolua热更库:从环境配置到多平台构建全攻略
  • 半导体百科_半导体工程师面试指南:PE/PIE/PDE岗位面试题库
  • Contrastive Clustering 代码复现:PyTorch 实现 AAAI 2021 论文,CIFAR-10 精度提升 39%
  • JVM 内存参数 -Xms 与 -Xmx 同值实战:Spring Boot 应用启动时间优化 30%
  • AutoCAD 2025在Win11/Win10系统上的详细安装与激活全攻略
  • 大气层系统完整指南:从零开始掌握Switch终极破解方案
  • VMware安装CentOS 7完整指南:从零搭建Linux开发环境
  • 01.02.02.DeepSeek:环境搭建篇(数据库插件 PGVector 向量数据库)
  • Linux C++网络编程实战:从零构建多线程日志服务器
  • Node.js + Express 搭建 CORS 跨域服务:5分钟配置 3个关键响应头
  • SpringBoot+Vue学生成绩管理系统:从环境搭建到定制开发的完整实践指南
  • 半导体百科_先进制程良率爬坡:从研发到量产的工程挑战
  • Unity发布aab(Android App Bundle)详解(一)从APK到AAB:Unity版本支持与打包配置全解析
  • 如何在老旧安卓电视上免费观看高清直播:MyTV-Android开源应用完全指南
  • 微信小程序Canvas图表库的5大突破性特性:从技术实现到商业应用的全方位解析
  • CVE-2020-15778:OpenSSH SCP命令注入漏洞原理与实战攻防
  • AD74413R与STM32F732IE实现高精度ADC/DAC方案