新闻详情

新闻详情

首页 / 资讯中心 / 详情

C++ 头文件命名约定

发布时间:2026/9/30 1:40:30来源:尧图网络
C++ 头文件命名约定
头文件命名约定一、命名约定二、实际案例在项目中正确选择头文件一、命名约定// 1. C 旧式风格以 .h 结尾早期 C 标准库风格#includeiostream.h// 旧式写法现已不推荐// 2. C 旧式风格以 .h 结尾C/C 均可使用#includemath.h// C 标准库头文件// 3. C 新式风格无扩展名使用 namespace std#includeiostream// 现代 C 标准库头文件#includecmath// 转换后的 C 头文件加前缀 c无扩展名// 4. 自定义头文件根据目标调用方选择扩展名#includemy_lib.h// 供 C/C 调用内部用 extern C 保护#includemy_lib.hpp// 仅 C 使用可封装 C 特性命名要点回顾标准库头文件iostream.h→iostream→cmath遵循「去扩展名、加c前缀」的演进自定义头文件面向 C/C 双调用方用.h仅面向 C 用.hpp无论哪种风格都应使用#ifndef宏保护避免重复包含。二、实际案例在项目中正确选择头文件场景描述假设你正在开发一个跨平台数学计算工具库需要同时兼容 C 和 C 调用方。项目结构如下mathlib/ ├── include/ │ ├── mathlib.h # C 风格头文件供 C/C 调用 │ └── mathlib.hpp # C 风格头文件封装 C 特性 ├── src/ │ ├── mathlib.c # C 实现 │ └── mathlib.cpp # C 封装实现 └── test/ ├── test_c.c # C 测试程序 └── test_cpp.cpp # C 测试程序操作步骤为 C 接口创建旧式头文件mathlib.h使用extern C保证 C 也能链接/* mathlib.h - C 旧式风格头文件 */#ifndefMATHLIB_H#defineMATHLIB_H#ifdef__cplusplusexternC{#endifdoublemathlib_sqrt(doublex);doublemathlib_pow(doublebase,doubleexp);#ifdef__cplusplus}#endif#endif/* MATHLIB_H */为 C 封装创建新式头文件mathlib.hpp无扩展名规则不适用于自定义文件这里使用.hpp区分 C 专属接口/* mathlib.hpp - C 新式风格头文件 */#ifndefMATHLIB_HPP#defineMATHLIB_HPP#includecmath// C 新式风格无扩展名使用 namespace std#includemathlib.hnamespacemathlib{inlinedoublesqrt(doublex){return::mathlib_sqrt(x);}inlinedoublepow(doublebase,doubleexp){return::mathlib_pow(base,exp);}}#endif/* MATHLIB_HPP */编写 C 测试程序test_c.c使用 C 旧式风格头文件/* test_c.c */#includestdio.h#includemathlib.hintmain(void){printf(sqrt(16.0) %.2f\n,mathlib_sqrt(16.0));printf(pow(2.0, 10) %.2f\n,mathlib_pow(2.0,10));return0;}编写 C 测试程序test_cpp.cpp使用 C 新式风格头文件/* test_cpp.cpp */#includeiostream#includemathlib.hppintmain(){std::coutsqrt(16.0) mathlib::sqrt(16.0)std::endl;std::coutpow(2.0, 10) mathlib::pow(2.0,10)std::endl;return0;}代码实现与编译分别编译两个测试程序# 编译 C 测试程序gcc test_c.c src/mathlib.c-Iinclude-otest_c# 编译 C 测试程序g test_cpp.cpp src/mathlib.cpp src/mathlib.c-Iinclude-otest_cpp运行结果说明运行两个程序输出如下$ ./test_c sqrt(16.0)4.00pow(2.0,10)1024.00$ ./test_cpp sqrt(16.0)4.00pow(2.0,10)1024.00案例要点总结C 旧式头文件.h通过extern C同时兼容 C 和 C 调用方C 新式头文件.hpp内部使用cmath等无扩展名标准头文件并借助namespace std使用标准库标准库头文件遵循命名约定iostream.h→iostream→cmath自定义头文件则根据目标调用方选择.h或.hpp通过分离 C 接口与 C 封装既保留了 C 的 ABI 稳定性又提供了 C 的类型安全与命名空间隔离。参考《c primer plus 第六版》
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Open-LLM-VTuber 本地部署全记录:3 条命令跑通会语音对话的 Live2D 虚拟形象 2026/9/30 2:29:07

Open-LLM-VTuber 本地部署全记录:3 条命令跑通会语音对话的 Live2D 虚拟形象

Open-LLM-VTuber 本地部署全记录:3 条命令跑通会语音对话的 Live2D 虚拟形象 【免费下载链接】Open-LLM-VTuber Talk to any LLM with hands-free voice interaction, voice interruption, and Live2D avatar running locally across platforms 项目地址: https:/…

阅读更多 →
群晖硬盘兼容性解锁指南:第三方硬盘入库教程 2026/9/30 2:29:07

群晖硬盘兼容性解锁指南:第三方硬盘入库教程

群晖硬盘兼容性解锁指南:第三方硬盘入库教程 【免费下载链接】Synology_HDD_db Add your HDD, SSD and NVMe drives to your Synologys compatible drive database and a lot more 项目地址: https://gitcode.com/GitHub_Trending/sy/Synology_HDD_db Synolo…

阅读更多 →
HelloGitHub 第 122 期精读:39 个精选开源项目全解析与分类指南 2026/9/30 2:28:54

HelloGitHub 第 122 期精读:39 个精选开源项目全解析与分类指南

技术博客文档知识库 【免费下载链接】HelloGitHub :octocat: 分享 GitHub 上有趣、入门级的开源项目。Share interesting, entry-level open source projects on GitHub. 项目地址: https://gitcode.com/GitHub_Trending/he/HelloGitHub 点击查看 免费下载 本篇文章…

阅读更多 →
旧Mac升级macOS的OCLP从零上手指南 2026/9/30 2:28:54

旧Mac升级macOS的OCLP从零上手指南

旧Mac升级macOS的OCLP从零上手指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher(OCLP)让2007年及以后生产…

阅读更多 →
月底风险排查 2026/9/30 2:28:48

月底风险排查

月底结账关键期,税务风险到底藏在哪里? 每逢月末关账节点,都是企业财务的高压时刻:赶制报表、核对往来、归集成本、整理票据,海量工作集中爆发,多数企业只求 “把账做完、把税报上”,却极易忽略…

阅读更多 →
LlamaIndex 系列【41】数据连接器:LlamaParse、LiteParse 2026/9/30 2:28:48

LlamaIndex 系列【41】数据连接器:LlamaParse、LiteParse

文章目录1. 数据连接器1.1 概述1.2 集成包1.3 使用方式1.4 部分模块1.5 模块指南2. LlamaParse2.1 一分钟获取解析结果2.2 可用文档 API2.2.1 Parse2.2.2 Extract2.2.3 Index2.2.4 Classify2.2.5 Split2.3 代码示例3. LiteParse3.1 能力清单3.2 快速开始1. 数据连接器 1.1 概述…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉