C语言程序组成(.c文件和.h文件的编写规范)

C程序组成:

	一个C语言源程序是由多个.c和.h组成的
	.c : C语言源代码文件
	.h : 头文件

.C文件的组成

(1) 头文件包含部分
#include : 包含命令
作用是把后面的那个文件的内容在此处展开。

		#include <stdio.h> 
		#include "filename.h" 

<> 与 “” 有什么区别? 搜素路径不同
#include 后面只是指定了文件名,并没有指定文件的保存路径,
那么咱们的编译器到哪里去找到这个.h文件呢?
<> : 到标准的搜索路径下面去找
如:
/usr/include/
“” : 先到工程指定的路径下面去找,如果没有找到,
那么再标准搜索路径下面去找。
如果编译工程代码时候,并没有指定搜索,那么它将默认是当前路径。

(2) 宏定义
宏定义: 定义一个宏
宏: 是一个替换别人的东西的东西。
宏有两种:
a、不带参数的宏
#define 宏名 要替代的内容

: 
							#define PI 3.1415 
							#define LED_ON 0 
							.....
							#define M 3 
							#define N 4

b、带有参数的宏
#define 宏名(参数列表) 要替代的内容
“参数列表” : 在宏定义的参数,不需要类型

如:
写一个宏,用来表示两个整数之间较大的那一个!

#define MAX(a, b) (a) > (b) ? (a) : (b) 
						
	int main(int argc, char **  argv)
	{
		int m = MAX(3, 4);
		}

c、宏的作用
(a) 替换
仅仅替换,不会额外增加()等
不作词义分析
(b) 宏有一个宏名,“字面意思”
(3) 声明部分
声明: C语言的声明是指把一个符号(标识符)与一个对象或类型关联起来。
告诉编译器,这个符号它是一个什么东西。
外部变量的声明:
语法:
extern 外部变量的类型 外部变量名;

外部函数的声明:
语法:
extern 外部函数的返回值类型 函数名(参数类型列表);

				1.c 						2.c 
												需要用到1.c中定义函数sum
												extern int sum(int , int ) ;
					int sum(int a, int b)
					{
						return a+b;
					}

类型的声明或定义:
自定义类型的作用域 最大就是本文件中生效。

1.c 						2.c 
							需要用到1.c中的 struct test 
							如果需要用到一模一样的,那么
							咱们需要在2.c中定义一个同样的
struct test  
{
	int a;
	char c; 
};

(4) 全局变量以及函数的声明

int a  = 5; 

(5) 函数的具体实现

int  main()
		{
			.....
		}
		int sum(int a. int b)
		{
			return a+b;
		}

总结:
C语言源代码文件是由函数组成的,C语言的指针必须写在函数内部,
一个.c文件,可以由多个函数组成,一个工程可以由多个.c组成,
但是一个.c 或者 一个工程 有且仅有一个main函数,这个main函数
就是程序的入口,main函数结束,程序就执行完毕

.h文件的组成

.h 接口文件一般会包含一些声明:
函数声明
类型声明或定义
宏定义

头文件中一般不包含代码的实现,因为它只是一个接口文件。
注意:
头文件不能够重复包含。
为了防止头文件被重复包含引发重复定义的问题。
头文件的编写规范如下:

			xxx.h 
				#ifndef __XXX_H__
				#define __XXX_H__ 
				
					//...头文件的具体的内容 
					
				#endif 

如:

#ifndef __HEAD_H__//格式__XXXXX_X__
#define __HEAD_H__
#define Num(a) sizeof(a)/sizeof(a[0])//求数组a的元素个数
#define Get_Bit(x,n) (x>>n)& 1//求整数x中第几位nbit
#define MAX(a,b) (a)>(b)?(a):(b)//比较两数大小
int  Sum_number(int a, int b);//求两数之和
#endif 

头文件的引用的原则:谁用谁包含

  • 7
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ChampLixxx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值