工程结构规则
一个工程必须有且仅有一个 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
局部变量:生命周期延长至程序结束(作用域不变)