【转】C++中#include包含头文件带 .h 和不带 .h 的区别

C++中#include包含头文件带 .h 和不带 .h 的区别?
如 #include <iostream> 和 #include <iostream.h> 包含的东西有哪些不同?之前在写C++程序的时候只知道使用 #include <iostream> 的时候,使用函数前要用 
using namespace std; 导入命名空间,而 #include <iostream.h> 则不用,这个得看C+
+标准化过程为C++开发者做了哪些有意义的工作。(1)C++增加了名称空间概念,借以将原来声明在全局空间下的标识符声明在了
namespace std下。
(2)统一C++各种后缀名,如.h、.hpp、.hxx等。标准化之前的头文件就是带后缀名的文
件,标准化后的头文件就是不带后缀名的文件。C++ 98 规定用户应使用新版头文件,对旧
版本头文件不在进行强制规范,但大多数编译器厂商依然提供旧版本头文件,以求向下兼
容。也就是说带 .h 的头文件是旧标准的,如果想用新的标准的头文件就不要带 .h。另外,为了和C语言兼容,C++标准化过程中,原有C语言头文件标准化后,头文件名前带个
c字母,如cstdio、cstring、ctime、ctype等等。这些头文件都可以在 C:\Program 
Files\Microsoft Visual Studio 10.0\VC\include 这个目录下找到(以VC2010为例)。
也就是说,我们如果要用C++标准化了的C语言头文件,就得作如下的转换#include <stdio.h> --> #include <cstdio>
#include <stdlib.h> --> #include <cstdlib>
#include <string.h> --> #include <cstring>#if !defined(__cplusplus)
#  include <mem.h>
#else /* __cplusplus */
#  if !defined(__USING_STD_NAMES__)
#    include <mem.h>
#  else /* __USING_STD_NAMES__ */
#    include <memory.stl>
#  endif /* __USING_STD_NAMES__ */
#endif /* __cplusplus */C中<*.h>表示优先中系统目录中查找 该头文件  比如#include <stdio.h>  这是系统中的
"*.h"表示优先从当前目录中查找  该头文件  比如#include "head.h"   这是你自己写的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/436328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql 第二大的数据_MYSQL – 从大表中的第二行中选择数据

我有一个外部第三方程序实时将数据库导出到mysql,我想显示报告数据.所以,我无法改变结构,因为它是实时同步的.表结构是这样的ID | Date | Transaction-----------------------------12 | 2012-11-01 | 20012 | 2012-11-02 | 25012 | 2012-11-03 | 15012 | 2012-11-04 | 100012 …

串口通讯编程一日通1(整合资料) .

本文以VC为平台进行串口通信编程 串口通讯在VC下实现方式有很多&#xff0c;控件自然是最简单话的方式了&#xff0c;但由于控件只支持对话框程序&#xff0c;有些场合又不需要对话框&#xff0c;所以用Windows API实现是比较好的方式 串行通信的操作方式 1.同步方式 同步方…

去除分页预览

有时我们在打开一个Excel表的时候,会出现如下图样式: 此为作了"分页预览"设置,取消方法如下图: 选择"普通"即可转载于:https://www.cnblogs.com/wxbbk/archive/2007/10/07/915773.html

【转】C++指针详解!!!!

指针的概念 指针是一个特殊的变量&#xff0c;它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容&#xff1a;指针的类型&#xff0c;指针所指向的类型&#xff0c;指针的值或者叫指针所指向的内存区&#xff0c;还有指针本身所占据的内…

mysql rename语法错误_为什么现在MySQL无法重命名数据库?

MySQL 之前提供了一个 rename database db_old to db_new 的命令来直接对数据库改名&#xff0c;可能由于实现的功能不完备(比如&#xff0c;这条命令可能是一个超大的事务&#xff0c;或者是由于之前的表很多还是 MyISAM 等)&#xff0c;后来的版本直接取消了这条命令。一、my…

串口通讯编程一日通2(Overlapped IO模型)

第一篇初步了解串口的大致运作&#xff0c;接下来我们看基本操作 先看串口操作的数据结构&#xff1a; 串口操作有几个比较重要的Struct 1.Overlapped I/O 异步I/O模型 异步I/O和同步I/O不同&#xff0c;同步I/O时&#xff0c;程序被挂起&#xff0c;一直到I/O处理完&#xff0…

【转】VTK + QT + VS 编译安装配置

VTK Vtk&#xff0c;&#xff08;visualization toolkit&#xff09;是一个开源的免费软件系统&#xff0c;主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的&#xff0c;它的内核是用C构建的&#xff0c;包含有大约250,000行代码&#…

python手动回收内存哪家好_谈谈如何手动释放Python的内存

在上篇博客中&#xff0c;提到了对一个脚本进行的多次优化。当时以为已经优化得差不多了&#xff0c;但是当测试人员测试时&#xff0c;我才发现&#xff0c;踩到了Python的一个大坑。在上文的优化中&#xff0c;对每500个用户&#xff0c;会进行一些计算并记录结果在磁盘文件中…

串口通讯编程一日通3(COMMTIMEOUTS DCB整理)

上一篇看了Overlapped IO模型后&#xff0c;接下来看剩下两个重要结构&#xff1a; 2.COMMTIMEOUTS结构 超时设置 COMMTIMEOUTS&#xff1a;COMMTIMEOUTS主要用于串口超时参数设置。COMMTIMEOUTS结构如下&#xff1a; typedef struct _COMMTIMEOUTS { D…

【转】ITK和VTK比较

概念比较安装步骤遇到的问题 转自&#xff1a;https://blog.csdn.net/qq_34690929/article/details/78146523 概念比较 基本概念ITK&#xff08;Insight Segmentation and Registration Toolkit&#xff09;VTK&#xff08;visualization toolkit&#xff09;作用一款医学图像…

用Linq转换数据

Linq的好处不用多说。由于它能Linq TO XXX&#xff0c;所以用它进行XXX数据类型之间的转换也是非常惬意的事情。 转载于:https://www.cnblogs.com/think/archive/2007/10/26/Linq1.html

进程控制1--fork vfork函数

linux系统调用fork()创建一个和当前进程完全相同的拷贝进程&#xff0c;其中父进程和子进程的代码段&#xff0c;堆栈段&#xff0c;数据段均独立 进程必须的4要点&#xff1a; a.要有一段程序供该进程运行 b.进程专用的系统堆栈空间。 c.进程控制块&#xff0c;在linux中具体实…

eveningplan

熨衣服预习c#写三分钟演讲稿收拾房间 转载于:https://www.cnblogs.com/loverain/archive/2007/11/12/957136.html

【转】我的CV之路第一篇:ITK是啥?

Itk篇 &#xff08;Insight Segmentation and Registration Toolkit&#xff09;ITK Itk篇前言一、ITK是什么&#xff1f;二、一些函数 1.读/写图片2.滤波器 前言 学习医疗图像分割过程中&#xff0c;遇到了很多困难&#xff0c;英文文献&#xff0c;数学基础&#xff0c;图像…

mysql slowlog中querytime分析_技术分享 | Slow Query Log 使用详解

作者&#xff1a;宓祥康爱可生交付服务部团队 DBA 擅长日志分析、问题排查等&#xff1b;主要负责处理 MySQL 与我司自研数据库自动化管理平台 DMP 的日常运维问题&#xff0c;对数据库及周边技术有浓厚的学习兴趣。本文来源&#xff1a;原创投稿爱可生开源社区出品&#xff0c…

进程控制2--exec族

系统调用exe函数族对当前进程进行替换&#xff0c;替换着为一个指定程序&#xff0c;其参数包括文件名filename&#xff0c;参数列表argv&#xff0c;以及环境变量envp 整个函数家族如下&#xff1a; #include <unistd.h> extern char **environ; int execl(const char *…

请问如何让Dundas chart for asp.net控件产生的临时图片文件减少一些?

所属分类&#xff1a;.NET技术 图表区-----------------------------------------在用Dundas chart for asp.net控件生成图表时,每个图表都作为一个图片文件被保存下来了,这样,浏览多了,这些无用的图片文件也多了?请问大家怎么样让它不要产生这么多临时文件? ---------------…

【转】二、VTK用于QT的安装

一、说明 本文的主要目的是在说明通过Cmake重新编译VTK,使得其能够与QT交互使用 二、VTK的安装 VTK版本&#xff1a;8.2.0 VS版本2019 电脑&#xff1a;win-64bit 需要软件&#xff1a;CMake(我使用的版本是3.16.0) 三、过程 大概过程分为以下几个步骤&#xff1a; 1、下载vt…

mysql密码安全级别_Mysql数据库的安全性问题释疑

数据库系统的安全性包括很多方面。由于很多情况下&#xff0c;数据库服务器容许客户机从网络上连接&#xff0c;因此客户机连接的安全对MySQL数据库安全有很重要的影响。不在客户机的命令行上提供密码使用mysql、mysqladmin等客户机用一个用户身份与MySQL服务器连接时&#xff…

SQL中binary 和 varbinary的区别

binary 和 varbinary固定长度 (binary) 的或可变长度 (varbinary) 的 binary 数据类型。binary [ ( n ) ]固定长度的 n 个字节二进制数据。N 必须从 1 到 8,000。存储空间大小为 n4 字节。 varbinary [ ( n ) ]n 个字节变长二进制数据。n 必须从 1 到 8,000。存储空间大小为实际…