头文件 代码文件

简介: 引用:http://www.cnblogs.com/renxs/archive/2012/01/11/2319132.html      在学习C++之前我们需要了解C++文件结构。C++的代码文件有头文件(*.h)和代码文件(*.cpp)之分。

引用:http://www.cnblogs.com/renxs/archive/2012/01/11/2319132.html

     在学习C++之前我们需要了解C++文件结构。C++的代码文件有头文件(*.h)和代码文件(*.cpp)之分。两者合起来我们称为单元文件。实际上 编译器也是一个cpp一个cpp文件的编译然后再连接各个编译文件的结果文件(C++编译过程会在以后篇章介绍)。C++/C程序的头文件以“.h”为后 缀,C程序的定义文件以“.c”为后缀,C++程序的定义文件通常以“.cpp”为后缀(也有一些系统以“.cc”或“.cxx”为后缀)。

     大多数情况下头文件和代码文件是一一对应的。在头文件里主要写一些函数(全局函数),变量(全局变量),数据类型的定义(其实就是用户自定义类,类中的函数实现一般在代码文件中)等声明。这样可以在多个代码文件中共享这些函数,变量和数据类型的定义等。

   头文件

   头文件是不被编译的,cpp中引用头文件实际上是当预编译的时候将头文件中的内容插入到cpp文件中。因此变量的定义、函数的定义不要写到头文件中。因为头文件很可能要被多 个cpp引用。当连接的时候可能会出现重复定义的情况。

有2种常见的错误:

1>同一编译单元的头文件重复引用,可能会出现重复定义

2>不同编译单元引用同一头文件,链接时发现重复定义

1、为了防止头文件被重复引用,应当使用 #ifndef  #define ... #endif 结构

    但是是不是所有的头文件加上这个,能防止出现重复引用导致重复定义的错误呢?

    答案是否定的。在不同的编译单元引用同一头文件的时候,还是会出现重复定义的错误。

   这种结构只能防止第一种情况下的错误。

2、用 #include  <test>或者<test.h>格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。

     用 #include “test”或者"test.h" 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。

3、C++ 标准头文件与C头文件区别与联系以及C风格字符串

接下来讲解:C++ 宏和预编译 预编译头

ps:VC中编绎C和C++是分大小写的

相关文章
【链表】还不会用C++实现链表?一文教会你各种链表的实现
【链表】还不会用C++实现链表?一文教会你各种链表的实现
441 0
|
数据采集 人工智能 自然语言处理
Llama3训练每3小时崩一次?豆包大模型、港大团队为脆皮万卡训练提效
【8月更文挑战第29天】豆包大模型与香港大学团队合作研发的ByteCheckpoint系统,旨在应对大语言模型(LLM)开发中的数据规模庞大、计算资源昂贵及训练过程不稳定的挑战。该系统通过统一检查点机制、细粒度资源管理和多模态数据处理等创新技术,显著提升了LLM的训练效率和模型性能,并已在多个实际场景中取得显著效果。
230 4
|
人工智能 安全 应用服务中间件
AI 时代,网关更能打了
随着互联网从 Web 2.0 迈进到 AI 时代,用户和互联网的交互方式,AI 时代下互联网的内容生产流程都发生了显著的转变,这对基础设施(Infra)提出了新的诉求,也带来了新的机遇。Infra 包含的内容非常丰富,本文仅从网关层面分享笔者的所见所感所悟。
996 109
|
10月前
|
存储 缓存 前端开发
SPA 单页面的优缺点
单页面应用(SPA)优点包括:用户体验流畅、无需刷新页面、减少服务器压力。缺点有:SEO优化困难、初始加载时间长、前端逻辑复杂。
|
数据可视化 API
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍
【Qt 学习笔记】Qt常用控件 | 多元素控件 | Tree Widget的说明及介绍
707 2
|
12月前
|
自动驾驶 物联网 5G
波束成形技术在5G中的关键作用
波束成形技术在5G中的关键作用
323 0
|
搜索推荐 数据可视化 数据挖掘
会展中心定位导航:精准展位指引,提升用户参馆体验,增加企业成交机会!
在数字化时代,会展中心借助物联网、大数据与AI技术,推出了智能定位导航系统,革新参会体验。展前通过线上展位预约和可视化招商地图,简化招商流程,提高展位分配效率。展会期间,利用精准定位技术,实现一键导航,同时提供个性化展位推荐,增强参观效率与满意度。系统还支持位置分享、车位检索等功能,并通过数据分析为决策提供支持,全面提升会展品牌形象与竞争力。
266 0
会展中心定位导航:精准展位指引,提升用户参馆体验,增加企业成交机会!
|
边缘计算 人工智能 安全
未来云平台发展趋势与挑战分析
云计算作为当今信息技术领域的重要趋势,已经深刻改变了企业的IT运营模式和发展方式。未来,随着技术的不断演进和市场需求的不断变化,云平台将面临着新的发展趋势和挑战。本文将分析未来云平台发展的趋势,探讨相关挑战,并提出应对策略。
|
程序员 C++
C++中第三方库的一般使用方式(libxl库为例)
C++中第三方库的一般使用方式(libxl库为例)
1516 0
|
存储 Serverless 文件存储
No space left on device
No space left on device
501 1