zoukankan      html  css  js  c++  java
  • C++头文件讲解

    备注:由于本人C++水平有限,以下内容仅仅是参考。希望不要误导大家,有问题请给我信息。

         由于之前学习C#的先入为主的感觉,导致学习C++有很多问题一开始没有想明白。

         在学习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++是分大小写的

    静静的努力寻找属于自己的

     我用菊子曰写的这篇文章!你也试试?
  • 相关阅读:
    [Linux] 设置系统时区
    [Python] 当猎头遇上 Guido van Rossum
    [Ubuntu] LightDM 轻量级桌面显示管理器
    [Java] Apache Ant 构建基础教程
    [Python] pip 简明指南
    .NET Core下的Spring Cloud——前言和概述
    福州首届.NET开源社区技术交流会圆满成功
    【福州活动】| "福州首届.NET开源社区线下技术交流会"(2018.11.10)
    使用CoreRT将.NET Core发布为Native应用程序
    使用.NET Core快速开发一个较正规的命令行应用程序
  • 原文地址:https://www.cnblogs.com/renxs/p/2319132.html
Copyright © 2011-2022 走看看