高质量c/c++编程学习之一:文件结构
来源:互联网 发布:论文检测软件下载 编辑:程序博客网 时间:2024/06/06 19:36
高质量c/c++编程学习之一:文件结构
注:本文参考《高质量c/c++编程》
1.1 版权和版本的声明
版权和版本的声明位于头文件和定义文件的开头(参见示例 1-1),主要内容有:
(1)版权信息。
(2)文件名称,标识符,摘要。
(3)当前版本号,作者/修改者,完成日期。
(4)版本历史信息
/* * Copyright (c) 2001,上海贝尔有限公司网络应用事业部* All rights reserved.* * 文件名称: filename.h* 文件标识: 见配置管理计划书 * 摘 要: 简要描述本文件的内容 * * 当前版本: 1.1* 作 者: 输入作者(或修改者)名字 * 完成日期: 2001年7月20日 * * 取代版本:1.0 * 原作者 : 输入原作者(或修改者)名字* 完成日期: 2001年5月10日*/
1.2 头文件的结构
【方法 1】为了防止头文件被重复引用,应当用 ifndef/define/endif 结构产生预处理块。
假设头文件名称为 graphics.h,头文件的结构参见示例如下:
// 版权和版本声明见示例 1-1,此处省略#ifndef GRAPHICS_H // 防止 graphics.h 被重复引用#define GRAPHICS_H #include <math.h> // 引用标准库的头文件 … #include “myheader.h” // 引用非标准库的头文件 … void Function1(…); // 全局函数声明 … class Box // 类结构声明 { … }; #endif
【方法 2】#pragma once是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次。
#pragma once... ... // 一些声明语句
区别:
#pragma once是编译器相关的,有的编译器支持,有的编译器不支持,具体情况请查看编译器API文档,不过现在大部分编译器都有这个杂注了。
#ifndef,#define,#endif是C/C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式。
比较:
#ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点就是如果不同头文件的宏名不小心“撞车”,可能就会导致头文件明明存在,编译器却硬说找不到声明的状况。
#pragma once则由编译器提供保证:同一个文件不会被编译多次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。带来的好处是,你不必再费劲想个宏名了,当然也就不会出现宏名碰撞引发的奇怪问题。对应的缺点就是如果某个头文件有多份拷贝,本方法不能保证他们不被重复包含。当然,相比宏名碰撞引发的“找不到声明”的问题,重复包含更容易被发现并修正。
方式一由语言支持所以移植性好,方式二 可以避免名字冲突
#pragma once方式产生于#ifndef之后,因此很多人可能甚至没有听说过。目前看来#ifndef更受到推崇。因为#ifndef受语言天生的支持,不受编译器的任何限制;而#pragma once方式却不受一些较老版本的编译器支持,换言之,它的兼容性不够好。也许,再过几年等旧的编译器死绝了,这就不是什么问题了。
1.3 目录结构
如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别 保存于不同的目录,以便于维护。
例如可将头文件保存于 include 目录,将定义文件保存于 source 目录(可以是多级 目录) 。
如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声 明”。为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。
阅读全文
0 0
- 高质量c/c++编程学习之一:文件结构
- 高质量c编程指南 之一
- 高质量C/C++编程指南--文件结构
- 第一章 高质量C编程规范&文件结构
- C/C++高质量编程笔记-第一章 文件结构
- 高质量C++/C编程指南 -- 内存管理之一
- 《高质量C++/C编程指南》读书笔记之一
- 高质量C++/C编程指南(第1章 文件结构)
- 高质量C++/C编程指南 -- 第1章 文件结构
- 高质量C++/C编程指南 -- 第1章 文件结构
- 高质量C++/C编程指南 -- 第1章 文件结构
- 读书笔记-高质量C++/C编程指南-第1章 文件结构
- 高质量C++/C编程指南 -- 第1章 文件结构
- 高质量C++/C编程指南 -- 第1章 文件结构
- 高质量C++/C编程指南 -- 第1章 文件结构
- c/c++高质量编程学习
- C/C++怎样编写高质量的程序:头文件和源文件模板------高质量C++/C编程指南-第1章-文件结构
- 高质量C++/C编程指南学习笔记(上)
- 求素数问题 oj16
- 结构体,指针嵌套内存对其位域条件编译
- 圆形图片的引用
- 求树的最大宽度(层次遍历法)
- React Native 第一天
- 高质量c/c++编程学习之一:文件结构
- OpenBSD新版将增加KARL功能:重启换内核
- (递推)折线分割平面--HDOJ
- mac实用软件
- 读取PCD文件
- 品尼高Pinnacle Studio 18下载 中文免费版
- JDK源码-Collection-remove()以及removeAll()
- HDU-1272 小希的迷宫
- Google着手与 Open AI 合作预防人工智能暴走