首页 > 编程语言 >C++自学笔记3(头文件)

C++自学笔记3(头文件)

时间:2024-07-21 09:54:03浏览次数:14  
标签:include 头文件 函数 int void C++ 自学 main

头文件就是各个函数申明存放地(也可以放结构体

现在你有main.c文件、A.c、B.c文件

A.c包含A()函数

B.c包含B()函数

如果想要在main.c中使用A()B()两个函数,那么我们必须在int main()之上进行申明

_________________________________________________________________________

//main.cpp

#include <iostream>

void A();

void B();

int main()

{

        A();

        B();

}

-----------------------------------------------------------------------------------------------------------------------

我们将申明,也就是

void A();

void B();

分别放到A.h和B.h,头文件里h (head),那么代码将变成

_________________________________________________________________________

//main.cpp

#include <iostream>

#include“A.h”

#include“B.h”

int main()

{

        A();

        B();

}

将申明放在头文件这么做有什么好处?

上面我们只说A.c文件中有A函数,如果其有A1、A2、A3。。。。。A50,有五十多个函数。

恰巧main.c、B.c、C.c三个文件里都需要这50个函数,第一种三个文件里你都需要复制50个申明,占据了150行。

同样情况,将50个函数放在A.h头文件里,将#include “A.h”复制在三个文件中,三个文件里仅仅占据了3行。这让我们的代码更加简洁了。

还有一件事,当A10函数出问题,你优化修改了A10会发生什么?

第一种不加头文件情况下,你必须记得你都将函数复制到哪些文件里,然后依次更改。

第二种加上头文件情况下,你只需改掉A.h中A10函数即可。

A.h应该怎么写?
 

//A.h

#include <iostream>

#pragma once

void A1(int a1);

void A2(int a2);

void A3(int a3);
//A.h

#include <iostream>

#ifndef  _A_H

#define _A_H

void A1(int a1);

void A2(int a2);

void A3(int a3);

#endif

写A.h头文件,就像,将各个函数的申明放在一个文件夹里

那么其他东西是干什么的?首先来看第二种里的

#ifndef  _A_H

#define _A_H

void A1(int a1);

void A2(int a2);

void A3(int a3);

#endif

头文件先ifdef  _A_H,是否定义了_A_H?

两种情况,第一种已经定义过了,那么执行到此为止。

第二种还未被定义那么#define _A_H,我们对其定义_A_H(类似标志位或者起个名),然后申明A123,最后#endif结束定义。

这就是头文件的书写格式,那么为什么要有这一步呢?

编程就是一个“一行代码完成任务,十行代码防呆防傻子”。

为什么会有第一种情况A_H被定义过了?我们将A.h编写好,main.c文件与B.c文件都引用到了A.h,B.c文件里有B自己的函数,我们将B.h也放在main.c文件中。

那么我们再次看main.c引用的头文件只有A.h、B.h。但是,B.h中也包含A.h,意味着在main.c中我们重复引用了A.h头文件。这对程序来说是没有必要的,所以用此格式屏蔽掉已经重复的部分减少冗余。

我们再来看看第一个代码块

//A.h

#include <iostream>

#pragma once

void A1(int a1);

void A2(int a2);

void A3(int a3);

这个头文件中#pragma等同于上述的三行代码,效果是一样的,大多编译器都可以识别此行代码。不过教材中一般都用三行代码。对于我,那就是怎么简单怎么写喽^-^

标签:include,头文件,函数,int,void,C++,自学,main
From: https://blog.csdn.net/weixin_64418869/article/details/140582534

相关文章

  • Standard Template Libary or C++ Standard Library
    C++提供一套标准的library称为C++standardlibrary完全以template完成,所以又被称为StandardTemplateLibrary。这套library专门有于实现常用的据结构(例如arry、list......)以及常用的算法(例如push,pop,insert,delete,query,retrieval......)。一般来说,STL包含六个主要的组件......
  • C++面向对象三大特性:继承
     前言:众所周知,C++作为一个面向对象的编程语言,有着三大特性:封装,继承,和多态。在前面的C++学习中,我们大部分所接触的只有封装,现在,就让我们来认识一下继承吧。一、继承的概念继承是指一个类(子类)从另一个类(父类)获得属性和行为的过程,它是使得代码得到复用的重要手段,允许程序员......
  • C++分组背包问题_动态规划dp_背包_算法竞赛
    OIWiki上的详细讲解模型总结分组背包的问题模板:有nnn件物品和一个大小为mm......
  • 一元二次方程c++题目
    描述利用公式x1=(-b+sqrt(b*b-4*a*c))/(2*a),x2=(-b-sqrt(b*b-4*a*c))/(2*a)求一元二次方程ax2+bx+c=0的根,其中a不等于0。输入输入一行,包含三个浮点数a,b,c(它们之间以一个空格分开),分别表示方程ax?+bx+c=0的系数。输出输出一行,表示方程的解。若b2=4*a*c,则两个实根相......
  • Linux C++ 065-设计模式之组合模式
    LinuxC++065-设计模式之组合模式本节关键字:Linux、C++、设计模式、组合模式相关库函数:概念组合模式(CompositePattern),又叫做部分-整体模式,使得用户对单个对象和组合对象的使用具有一致性。它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理......
  • Linux C++ 066-设计模式之访问者模式
    LinuxC++066-设计模式之访问者模式本节关键字:Linux、C++、设计模式、访问者模式相关库函数:概念在访问者模式(VisitorPattern)中,我们使用了一个访问者类,它改变了元素类的执行算法。通过这种方式,元素的执行算法可以随着访问者改变而改变。这种类型的设计模式属于行为型模......
  • C++面向对象编程的一个核心概念--RAII
    RAII是"ResourceAcquisitionIsInitialization"(资源获取即初始化)的缩写,它是C++编程中的一种编程技术,用于管理资源的生命周期。RAII是C++面向对象编程的一个核心概念,它利用对象的构造函数和析构函数来自动管理资源,如内存、文件句柄、线程、互斥锁等。RAII的主要原则包括:1.*......
  • 如何使用C++中的字符串类(如std::string)
    在C++中,std::string 类是标准模板库(StandardTemplateLibrary,STL)的一部分,它提供了对字符串的灵活处理。std::string 使得字符串的存储、操作、比较、查找等任务变得更加方便和高效。下面将介绍如何使用 std::string 类。1.包含头文件要使用 std::string,首先需要包含......
  • 掌握 C++ 异常艺术:构建健壮程序的秘诀与实战策略「一」
    以下内容为本人的烂笔头,如需要转载,请全文无改动地复制粘贴,原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/WC8CThJ77oHMsCSH0CBzsQ在过去几十年的编程历史中,异常处理的演变仿佛一场文明的进化史,它不仅仅是技术的革新,更是编程思想与哲学的深刻体现。从古早的错......
  • Android C++系列:Linux文件系统(二)
    1.VFS虚拟文件系统Linux支持各种各样的文件系统格式,如ext2、ext3、reiserfs、FAT、NTFS、iso9660等等,不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式,然而这些文件系统都可以mount到某个目录下,使我们看到一个统一的目录树,各种文件系统上的目录和文件我们用l......