C++易混淆:.h头文件的原理及作用粗浅解释

参考:C/C++ 头文件的粗浅理解_哔哩哔哩_bilibili 

           【10】C++头文件_哔哩哔哩_bilibili 

1.头文件是什么?为什么需要头文件?

头文件通常用于声明某些类型的函数,以便这些函数能够被使用到我的程序当中,比如,我们在一个文件中创建函数,但我们想在另一个文件中使用它----此时我们就需要一个公共的地方来存放这些东西。

2.举一个简单的例子

1.首先,在main.cpp中写一个简单的函数:log()

2.让我们尝试着创建一个log.cpp文件,来解释上述的需要一个“公共的地方”到底是什么意思

 3.在log.cpp中尝试调用log()函数,发现报错

 Q: How do we tell that 'log' function does exist,but it was just defined elsewhere.

     如何判断我们写过的log函数的确存在,但只是因为它在别处定义了呢?

3.头文件----我们想要的‘公共区域’(header files)

#include具有‘复制粘贴’的能力,将一个文件copy到另一个文件

1.让我们试试创建一个头文件log.h来解决上面的问题吧

2.在log.h中声明函数

      ---注意只写声明,不要写函数的定义,不然会在.cpp和.h中造成函数的重复定义

3.在log.cpp中使用#include log.h,点击运行就不会再有报错

4.#pragma once有什么用?
#pragma once
//首先,任何以”#“开头的命令,都被称为《预处理器命令》或者《预处理器指令》-这意味着它将会被优先处理
//pragma once-->只包括这个文件一次,组织我们单个头文件被多次包含
/*
 * include的工作原理是“复制和粘贴文件到其他文件”,所以,在创建commom.h文件which included log.h
 * 在log.cpp中同时#include log.h和common.h时
 * 定义的结构体player就会产生重复,从而导致程序报错
 * 所以,在头文件.h中添加#pragma once 可以避免这样的错误
 */

//创建一个名为player的结构体,因为结构体的名字必须是唯一的;that's what pragma for
struct player{};
5.#ifndef有什么用?

在新建任意.h头文件时,发现Clion编译器自动生成了如下三条语句 ,我想知道它有什么用?

#ifndef与#pragma once的功能相同,都是为了使得文件只被复写“仅一次”,从而避免“重定义”redefination.

书写格式:在define后面声明我们的东西

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值