尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

C++ 头文件命名约定

发布时间:2026/9/30 1:40:29

资讯中心
01
ARTICLE

C++ 头文件命名约定

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 第六版》
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。