zoukankan      html  css  js  c++  java
  • 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

    五: 测试代码

    文件结构

    // 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
    ");
    
        int nNum = 0;
        nNum = gNum + gNum2;
        printf("%d
    ", nNum);
    
        return nNum;
    }
    // ConsoleApplication9.cpp
    
    #include "stdafx.h"
    #include "Plus.h"
    
    int gNum2 = 10;    // 变量定义 - 全局变量
    
    int main()
    {
        int nNum = 3;
        printf("main
    ");
        nNum = Plus(nNum);
    
        nNum = nNum + gNum;
        printf("%d
    ", nNum);
    
        return 0;
    }
    /*
    // result
    main
    Plus
    13
    16
    */
  • 相关阅读:
    LeetCode——加油站
    LeetCode——分发糖果
    LeetCode——单词拆分 ii
    LeetCode—— 单词拆分
    LeetCode——重排链表
    IAR ARM、IAR STM8、IAR MSP430共用一个IDE
    OSAL多任务资源分配机制
    Win7系统Matlab2013a安装.m文件不自动关联到MATLAB.exe解决方法
    Java SE/ME/EE的概念介绍
    STL,ATL,WTL之间的联系和区别
  • 原文地址:https://www.cnblogs.com/huafan/p/11488975.html
Copyright © 2011-2022 走看看