c语言中文件和文件操作

1头文件

所谓的头文件,其实它的内容跟 .cpp 文件中的内容是一样的,都是 C++ 的源代码。但头文件不用被编译。我们把所有的函数声明全部放进一个头文件中,当某一个 .cpp 源文件需要它们时,它们就可以通过一个宏命令 "#include" 包含进这个 .cpp 文件中,从而把它们的内容合并到 .cpp 文件中去。当 .cpp 文件被编译时,这些被包含进去的 .h 文件的作用便发挥了。

想要包含头文件中的代码我们需要使用#include

调用标准库函数我们可以用<>

#include <stido.h>

调用本地文件的函数可以用""

#include "my.h "

2头文件如何来关联源文件

在程序运行的时候,链接阶段会把所有的文件连在一起。

.h文件中能包含:

  • 类成员数据的声明,但不能赋值
  • 类静态数据成员的定义和赋值,但不建议,只是个声明就好。
  • 类的成员函数的声明
  • 非类成员函数的声明
  • 常数的定义:如:constint a=5;
  • 静态函数的定义
  • 类的内联函数的定义

不能包含:

  • 1. 所有非静态变量(不是类的数据成员)的声明
  • 2。 默认命名空间声明不要放在头文件,using namespace std;等应放在.cpp中,在 .h 文件中使用 std::string

 对于初学者来说,想要实现多文件操作,我们只需记住,头文件里写入的是其他源文件的代码的声明

例如,写一段简单的代码

main.c文件

#include<stdio.h>
#include"math.h"
int main()
{
	int a = 10;
	int b = 20;
	printf("max=%d\n", max(a, b));
	printf("min=%d\n", min(a, b));
}

math.h 文件

#pragma once
#ifndef MATH_H
#define MATH_H
int max(int x, int y);
int min(int x, int y);
#endif // !MATH_H

math.c文件

int max(int x, int y)
{
	return x > y ? x : y;
}
int min(int x, int y)
{
	return x < y ? x : y;
}

头文件的意义在于,当一个文件想要调用另一个文件的代码时,避免了重新打一边代码,更加的快捷,方便。

3嵌套文件包含

我们已经知道, #include 指令可以使另外一个文件被编译。就像它实际出现于 #include 指令的
地方⼀样。
这种替换的方式很简单:预处理器先删除这条指令,并用包含⽂件的内容替换。
⼀个头文件被包含10次,那就实际被编译10次,如果重复包含,对编译的压力就比较大。
test.h
void test();
struct Stu
{
 int id;
 char name[20];
};

test.c

#include<test.h>
#include<test.h>
#include<test.h>
#include<test.h>
#include<test.h>
int main ()
{

    
    return 0;
}
如果直接这样写,test.c⽂件中将test.h包含5次,那么test.h⽂件的内容将会被拷⻉5份在test.c中。
如果test.h ⽂件⽐较⼤,这样预处理后代码量会剧增。如果⼯程⽐较⼤,有公共使⽤的头⽂件,被⼤家
都能使⽤,⼜不做任何的处理,那么后果真的不堪设想。
如何解决头⽂件被重复引⼊的问题?
答案:条件编译。
每个文件开头这样写
#ifndef __TEST_H__
#define __TEST_H__

#endif 

或者

#pragma once

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值