007 头文件 : 作用/组织/包含

 

 

/*
目录:
   一: 编译器过程
   二: 头文件作用
   三: 头文件组织原则
   四: 头文件包含原则
   五: 测试代码
*/

 

一: 编译器过程

编译器过程:
    1 预处理
    2 词法和语法分析
    3 编译阶段 
    4 链接阶段

 

二: 头文件作用

头文件作用:
    1 简化声明: 有利于模块化设计
    2 提供接口: 保密 - 不公开源码
    3 类型检查: 外部调用某头文件接口,与头文件声明不一样,编译器会报错。

 

三: 头文件组织原则

头文件组织原则:
    1 不应包含本地数据,以降低模块间耦合度
    2 不允许定义变量和函数
    3 只能有变量和函数声明,及宏和类型(结构体)定义
    4 尽量使用#pragma once

 

四: 头文件包含原则

头文件包含原则:
    1 头文件包含顺序: 最特殊到一般
    2 仅包含当前必需的头文件,减少头文件的嵌套和交叉引用,加快编译速度。
    3 源文件中包含的头文件尽量不要有顺序依赖
    4 尽量在源文件中包含头文件,而非在头文件中。且源文件仅包含所需的头文件。 
    5 尽量保证用户使用此头文件时,无需手动包含其他前提头文件,即此头文件内已包含前提头文件
    

 

.h文件是头文件,内含函数声明、宏定义、结构体定义
.c文件是程序文件,内含函数实现,变量定义等内容

 

大神链接: https://www.cnblogs.com/clover-toeic/p/3851102.html

 

 

五: 测试代码

文件结构

007 头文件 : 作用/组织/包含_第1张图片

 

 

 

// Plus.h

#include "stdafx.h"

int Plus(int i);    // 函数声明

extern int gNum;    // 变量声明
extern int gNum2;    // 变量声明

 

 

// Plus.cpp

#include "Plus.h"

int gNum = 3;    // 变量定义 - 全局变量

int Plus(int i)
{
    printf("Plus\n");

    int nNum = 0;
    nNum = gNum + gNum2;
    printf("%d\n", nNum);

    return nNum;
}

 

// ConsoleApplication9.cpp

#include "stdafx.h"
#include "Plus.h"

int gNum2 = 10;    // 变量定义 - 全局变量

int main()
{
    int nNum = 3;
    printf("main\n");
    nNum = Plus(nNum);

    nNum = nNum + gNum;
    printf("%d\n", nNum);

    return 0;
}
/*
// result
main
Plus
13
16
*/

 

你可能感兴趣的:(007 头文件 : 作用/组织/包含)