.h文件深度理解(自用)

之前学c的时候就一直没搞明白头文件的作用,稀里糊涂的
今天给好好捋一下,打打基础
首先要明确c语言的编译过程:直达精析
预处理中, 展开头文件/宏替换/去掉注释/条件编译
头文件就用在这
头文件通常用来定义 数据类型,声明变量、函数、结构和类

由于c语言有着先定义后使用的规则当你要调用其它源文件中的函数、类等用于当前源文件中,就必须在当前源文件最前面给出声明

另一种更直接的说法就是
将#include "a.h"直接换成a.h文件内的内容
来实例:
main.cpp

#include <iostream>
#include "a.h"
using namespace std;

int main()
{
	cout<<"this is main"<<endl;
	a_fun();
}

a.cpp

#include<iostream>
using namespace std;

void a_fun()
{
    cout<<"this is a function";
}

a.h

#ifndef A_H       
#define A_H

void a_fun();

#endif

CMakeLists.txt

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)    #最低版本要求

project(csdn)  #项目名称

add_executable(main main.cpp a.cpp )   #指定生成目标

结果:
运行结果
好,现在不用头文件,将其直接替换掉,如下:

#include <iostream>
// #include "a.h"
void a_fun();
using namespace std;

int main()
{
	cout<<"this is main"<<endl;
	a_fun();
    return 0;
}

重新编译,运行结果不变

还有头文件和源文件之间没有必然联系,大家只是为了方便才将a.cpp 的头文件命名为a.h ,如果你愿意只要里面的内容不变(内容就是对a.cpp中的函数等等的声明)完全可以命名为b.h 、c.h …,对应的在调用的时候换成b.h 、c.h就行了

#include <iostream>
#include "b.h"
using namespace std;

int main()
{
	cout<<"this is main"<<endl;
	a_fun();
    return 0;
}

在这里插入图片描述
#ifndef xx
#define xx
#endif 是用来防止重定义的
xx是可以随意定的
书写规范
标识可以随便写的,全都大写下划线只不过是习惯性写法

  • 2
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用IntelliJ IDEA创建Java文件时,可以按照以下步骤进行操作。 首先,在左侧边栏找到您刚刚新建的项目同名的文件夹,并展开它。接下来,您会看到一个蓝色的src文件夹。右键单击该文件夹,选择“新建”并选择“软件包”。您可以为该软件包起一个名称(没有具体要求)。 创建完软件包后,您可以在这个软件包中创建Java文件。右键单击软件包,选择“新建”,然后选择“Java类”。在弹出的对话框中,您可以为Java类起一个名称。请确保在“类名”字段中输入“.java”扩展名,这样IntelliJ IDEA将会自动为您创建一个Java文件。 通过以上步骤,您就可以成功创建一个名为idea.java的Java文件了。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [IDEA/idea 怎么新建一个Java文件自用,适用于已经配置好jdk的情况下)](https://blog.csdn.net/qq_54416938/article/details/123670939)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [基于JSP的网上购物系统的设计与实现-mysql.zip](https://download.csdn.net/download/dearmite/88277347)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值