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

833 0
Honkers 2025-8-11 18:19:36 | 显示全部楼层 |阅读模式

C程序组成:

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

.C文件的组成

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

  1. #include <stdio.h>
  2. #include "filename.h"
复制代码

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

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

  1. 如:
  2. #define PI 3.1415
  3. #define LED_ON 0
  4. .....
  5. #define M 3
  6. #define N 4
复制代码

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

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

  1. #define MAX(a, b) (a) > (b) ? (a) : (b)
  2. int main(int argc, char ** argv)
  3. {
  4. int m = MAX(3, 4);
  5. }
复制代码

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

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

  1. 1.c 2.c
  2. 需要用到1.c中定义函数sum
  3. extern int sum(int , int ) ;
  4. int sum(int a, int b)
  5. {
  6. return a+b;
  7. }
复制代码

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

  1. 1.c 2.c
  2. 需要用到1.c中的 struct test
  3. 如果需要用到一模一样的,那么
  4. 咱们需要在2.c中定义一个同样的
  5. struct test
  6. {
  7. int a;
  8. char c;
  9. };
复制代码

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

  1. int a = 5;
复制代码

(5) 函数的具体实现

  1. int main()
  2. {
  3. .....
  4. }
  5. int sum(int a. int b)
  6. {
  7. return a+b;
  8. }
复制代码

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

.h文件的组成

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

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

  1. xxx.h
  2. #ifndef __XXX_H__
  3. #define __XXX_H__
  4. //...头文件的具体的内容
  5. #endif
复制代码

如:

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

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

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

中国红客联盟公众号

联系站长QQ:5520533

admin@chnhonker.com
Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5 ( 粤ICP备13060014号 )|天天打卡 本站已运行