C++头文件入门知识
来源:互联网 发布:yoast seo 中文版 编辑:程序博客网 时间:2024/05/30 23:33
1. C++中的头文件
1.1 标准库中的头文件
C++标准库中的一切内容都被放在名字空间std中(名字空间中的内容对外是不可见的),但是带来了一个新问题,无数现有的C++代码都依赖于使用了多年的伪标准库中的功能,如声明在<iostream.h>等头文件中的功能,使用std包装标准库导致现有代码的不可用,为了兼容这种情况,标准委员会为包装了std的那部分标准库创建了新的头文件,新的头文件的文件名与旧的一样,只是没有.h这个后缀,如<iostream.h>就变成了<iostream>。对于C头文件,采用同样的方法,但还在每个头文件名前加了字符c,如<string.h>就变成了<cstring>,<stdio.h>变成了<cstdio>。最好使用新的文件头,使用新的文件头的C++程序,需要使用using namespace std或者using namespace std::指定的类名,等方法来使需要的类对于我们的代码可视。
1.2 自定义的头文件
为了防止头文件被重复引用,最好使用预处理定义,如下所示:
#ifndef MYHEAD_H
#define MYHEAD_H
……//头文件中的内容
#endif
1.3 预处理相关知识
(1) #ifdef :判断一个预处理常量是否被定义,如#infef DEGUG
(2) #ifndef:判断一个预处理常量是否没被定义
(3) #define:定义一个预处理常量,如#define DEBUG
(4) #include
(5) #endif
(6) 对预处理常量的定义还可以在编译时进行,如CC –D DEBUG main.c
(7) 编译C++程序时,编译器自动定义了一个预处理器名字__cplusplus(注意前面有两个下划线),因此可以根据这个来判断该程序是否是C++程序,以便有条件地包含一些代码,如:
#ifndef MYHEAD_H
#define MYHEAD_H
#ifdef __cplusplus
extern "C" {
#endif
int DMpostprocessing();
#ifdef __cplusplus
}
#endif
#endif
(8) 在编译C程序时,编译器会自动定义预处理常量__STDC__。当然__cplusplus和__STDC__ 不会同时被定义;
(9) 另外两个比较有用的预定义常量是__LINE__(记录文件已被编译的行数)和__FILE__(正在被编译的文件名称)。使用如下:
if ( I==0 ) cerr<< “error:”<< __FILE__<<” line:”<<__LINE__<<”I must be ..”
(10) __DATE__:编译日期
(11) __TIME__:编译时间
(12) C库头文件的C++名字总是以字母C开头,后面去掉.h,如assert.h在C++中为cassert;
(13) 在C++中头文件后缀各不相同,因此标准的C++头文件没有指定后缀
1.1 标准库中的头文件
C++标准库中的一切内容都被放在名字空间std中(名字空间中的内容对外是不可见的),但是带来了一个新问题,无数现有的C++代码都依赖于使用了多年的伪标准库中的功能,如声明在<iostream.h>等头文件中的功能,使用std包装标准库导致现有代码的不可用,为了兼容这种情况,标准委员会为包装了std的那部分标准库创建了新的头文件,新的头文件的文件名与旧的一样,只是没有.h这个后缀,如<iostream.h>就变成了<iostream>。对于C头文件,采用同样的方法,但还在每个头文件名前加了字符c,如<string.h>就变成了<cstring>,<stdio.h>变成了<cstdio>。最好使用新的文件头,使用新的文件头的C++程序,需要使用using namespace std或者using namespace std::指定的类名,等方法来使需要的类对于我们的代码可视。
1.2 自定义的头文件
为了防止头文件被重复引用,最好使用预处理定义,如下所示:
#ifndef MYHEAD_H
#define MYHEAD_H
……//头文件中的内容
#endif
1.3 预处理相关知识
(1) #ifdef :判断一个预处理常量是否被定义,如#infef DEGUG
(2) #ifndef:判断一个预处理常量是否没被定义
(3) #define:定义一个预处理常量,如#define DEBUG
(4) #include
(5) #endif
(6) 对预处理常量的定义还可以在编译时进行,如CC –D DEBUG main.c
(7) 编译C++程序时,编译器自动定义了一个预处理器名字__cplusplus(注意前面有两个下划线),因此可以根据这个来判断该程序是否是C++程序,以便有条件地包含一些代码,如:
#ifndef MYHEAD_H
#define MYHEAD_H
#ifdef __cplusplus
extern "C" {
#endif
int DMpostprocessing();
#ifdef __cplusplus
}
#endif
#endif
(8) 在编译C程序时,编译器会自动定义预处理常量__STDC__。当然__cplusplus和__STDC__ 不会同时被定义;
(9) 另外两个比较有用的预定义常量是__LINE__(记录文件已被编译的行数)和__FILE__(正在被编译的文件名称)。使用如下:
if ( I==0 ) cerr<< “error:”<< __FILE__<<” line:”<<__LINE__<<”I must be ..”
(10) __DATE__:编译日期
(11) __TIME__:编译时间
(12) C库头文件的C++名字总是以字母C开头,后面去掉.h,如assert.h在C++中为cassert;
(13) 在C++中头文件后缀各不相同,因此标准的C++头文件没有指定后缀
阅读全文
0 0
- C++头文件入门知识
- 头文件知识 [转]
- 头文件知识 [转]
- 头文件知识
- C/C++知识扩充_C++头文件一览
- HTML头文件相关知识
- 知识误区-C++头文件
- c/c++头文件
- Turbo C头文件
- C头文件
- C/C++头文件
- C头文件大全
- C/C++头文件
- C/C++头文件
- c/c++头文件
- c/c++头文件
- C头文件大全
- C/C++头文件
- js中的匿名函数和匿名自执行函数
- 给计算机初学者的一封信【转】
- Windows程序设计学习(一)
- 认识ASCII
- 关于水仙花数
- C++头文件入门知识
- 引用 恐惧求职怎么办?
- 用U盘解决忘记XP登陆密码不能进入系统而烦恼【转】
- 学习Linux——系统特性
- Linux的分区概念
- 关于sizeof
- Win7占用内存多是聪明的、故意的【转】
- Windows Server 2008 参考学习图书大全 (共20本)
- 运算符