C语言:模块化编程

工程结构规则

一个工程必须有且仅有一个 main() 函数,程序从 main() 开始执行并终止

文件分工明确:
.c 文件存放变量定义和函数实现
.h 文件存放声明(函数原型、全局变量声明、宏定义、类型定义)


文件编写规范
.c 文件格式:

cpp 复制代码
#include "自身的.h"  // 仅包含自己的头文件
// 变量定义
// 函数实现

.h 文件格式:

cpp 复制代码
#ifndef UNIQUE_MACRO_NAME   // 如:MYMODULE_H
#define UNIQUE_MACRO_NAME
// 头文件包含
// 宏定义
// 类型定义
// 函数声明
// 全局变量声明(extern)
#endif

头文件保护机制

通过 #ifndef + #define + #endif 防止头文件重复包含

宏名需全局唯一(通常基于文件名,如 MYFILE_H


跨文件访问

全局变量共享:

源文件(.c)定义:int g_var;

头文件(.h)声明:extern int g_var;

函数作用域控制:

cpp 复制代码
void public_func();  // 默认可跨文件访问
static void private_func();  // static限制仅当前文件可见

编译注意事项:

编译命令必须链接所有 .c 文件;multiple definition:函数/变量在多个 .c 中重复定义;.gch 文件问题:误编译头文件产生预编译头,需手动删除


Static 关键字的模块化作用
static 全局变量/函数:仅当前文件可见,不可被外部引用
static 局部变量:生命周期延长至程序结束(作用域不变)

相关推荐
王老师青少年编程41 分钟前
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝案例实践1)
c++·csp·高频考点·信奥赛·提高组·搜索剪枝·小木棍
jingshaoqi_ccc2 小时前
windows 10系统下QT的安装及在Visual studio中的扩展安装
windows·qt·visual studio
王老师青少年编程4 小时前
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝核心思想 )
c++·dfs·csp·信奥赛·搜索剪枝·搜索优化
一拳一个呆瓜4 小时前
【STL】使用 C++ 标准库标头
c++·stl
王老师青少年编程4 小时前
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝案例实践2)
c++·信奥赛·csp-s·提高组·搜索剪枝·生日蛋糕·最优性剪枝
c++之路5 小时前
C++ 设计模式全总结
java·c++·设计模式
c238565 小时前
c/c++中的多态(上)
开发语言·c++
彷徨而立5 小时前
【C++】介绍 std::ifstream 输入文件流
开发语言·c++
MC皮蛋侠客5 小时前
C++17 多线程系列(十):多线程性能优化——从测量到调优
c++·多线程
程序大视界5 小时前
【C++ 从基础到项目实战】C++(六):拷贝控制——浅拷贝与深拷贝,兼谈智能指针
开发语言·c++·cpp