C库头文件的C++名字与C名字的区别
来源:互联网 发布:深圳市阿里云大厦饺子 编辑:程序博客网 时间:2024/04/27 22:27
在C++Primer 3rd中开篇中,有这样一段程序代码:
#include <iostream>
#include <vector>
#include <string>
#define DEBUG
using namespace std;
int main()
{
#ifdef DEBUG
cout << "Beginning execution of main ()/n";
#endif
string word;
vector<string> text;
while (cin >> word)
{
#ifdef DEBUG
cout << "word read:"<< word <<"/n";
#endif
text.push_back (word);
}
}
注意到其引入头文件处:
#include <iostream>
#include <vector>
#include <string>
这里不得不提到#include<iostream.h>与#include<iostrem>区别,进而要谈论一下C库中头文件的C++名字与C名字的区别,其实在C++ Primer中已有比较详细的描述,总结起来有以下几条:
(1) iostream.h里面定义的所有类以及对象都是在全局空间里,所以你可以直接用cout ; 但在iostream里面,它所定义的东西都在名字空间std里面,所以你必须加上 using namespace std才能使用cout
(2) 但string类库属于特殊情况。问题在于C++要兼容C的标准库,而C的标准库里碰巧也已经有一个名字叫做“string.h”的头文件,包含一些常用的C字符串处理函数,如strcmp。这个头文件跟C++的string类半点关系也没有,所以<string>并非<string.h>的“升级版本”,他们是毫无关系的两个头文件。
(3) C库头文件的C++名字总是以字母C开头,后面是去掉后缀.h的名字,由于在各种C++实现中,头文件的后缀各不相同,因此标准C++头文件没有指定后缀。如输入输出流的C++头文件名字为iostream,C头文件名字为iostream.h
(4) 使用头文件的C名字,或者C++名字,两种情况下头文件的#include预处理器指示符的效果也会不同:
a.使用C++头文件的#include指示符:#include<iostream>。代码的意思是将cassert的内容读入到文本文件中。但是由于所有的C++库名字是在名字空间std中被定义的,因而在程序文本文件中,它们是不可见的,除非用下面的using指示符显式地使其可见:using namespace std;
b.使用C头文件的#include指示符:#include <iostream.h>就可直接在程序文本文件中使用名字assert(),而无需使用using指示符
- C库头文件的C++名字与C名字的区别
- C头文件与库文件的区别
- 【C++】名字查找与类的作用域
- C/C++的预定义名字
- 编译器对C函数的名字修饰
- C++名字空间与包含头文件的方法
- C/C++头文件中<>与“”的区别详解
- 从<cstdio>与<stdio.h>浅析加c头文件与.h头文件的区别
- C头文件和C++头文件的区别
- A.c 和B.c两个c文件中使用了两个相同名字的static变量
- A.c 和B.c两个c文件中使用了两个相同名字的static变量
- c语言打印当前源文件的名字、行数、函数名
- C语言:运行中获取宏名字的技巧
- C语言:运行中获取宏名字的技巧
- c语言标识符的名字空间和作用域
- [c++]关于template和namespace的关联名字查找ADL
- C语言:运行中获取宏名字的技巧
- 关于C-ATS NODE项目改名字的问题
- c#控制Visio画图
- it168技术频道每日技术文章精选
- 配置路由图RouteMap的注意事项
- 转 温故知新ASP.NET 2.0(C#)系列文章索引
- Linux的硬盘安装
- C库头文件的C++名字与C名字的区别
- 我的CSDN blog 开通了!!!
- 转 通往性能优化的天堂-地狱 JOIN方法说明
- 转:十大绝招保护SQL Server数据库安全
- VS2005 把回车键当Tab键用
- Linux手机两大阵营较劲 台厂押宝Android态势明显
- 约瑟夫环的数组实现
- 用U-BOOT构建嵌入式系统的引导装载程序
- Lucene Change Log