美文网首页
第5周:程序结构——5.3 大程序结构

第5周:程序结构——5.3 大程序结构

作者: hyt222 | 来源:发表于2017-06-24 19:05 被阅读0次

1.多个源代码文件

多个 .c 文件

main() 里的代码太长了,适合分成几个函数(把相应功能剥离出来放在函数里头);

一个源代码文件太长了适合分成几个文件(函数拿出来放到多个 .c 文件里头);

两个独立的源代码文件不能编译形成可执行的程序。

编译单元

一个 .c 文件是一个编译单元。

编译器每次编译只处理一个编译单元。

一个项目对应产生一个可执行文件,IDE:集成开发环境


2.头文件

把函数原型(声明)放到一个头文件(以 .h 结尾)中,在需要调用这个函数的源代码文件(.c 文件)中 #include 这个头文件,就能让编译器在编译时知道函数的原型(形成桥梁/合同)。

#include

#include 是一个编译预处理指令,和宏一样,在编译之前就处理了。

它把那个文件的全部文本内容原封不动地插入到它所在的地方。所以也不是一定要在 .c 文件的最前面 #include 。

" " 还是 < >

#include 有两种形式来指出要插入的文件。

" " 要求编译器首先在当前目录(.c 文件所在的目录)寻找这个文件,如果没有,到编译器指定的目录去找;

< > 让编译器只在指定的目录去找。

编译器知道自己的标准库的头文件在哪里。

自己的头文件用 " " ,标准库的头文件用 < >

3. #include 的误区

#include 不是用来引入库的(把内容原封不动地插入到所在的地方)。

#include <stdio.h> 只是为了让编译器知道 printf 函数的原型。保证你调用时给出的参数是正确的类型。

头文件 TIPS

在使用和定义这个函数的地方都应该 #include 这个头文件。

一般的做法就是任何 .c 都有对应的同名的 .h 。把所有对外公开的函数的原型和全局变量的声明都放进去。(全局变量可在多个 .c 之间共享)

不对外公开的函数

在函数前加上 static 就使得它成为只能在所在的编译单元中被使用的函数。

在全局变量前面加上 static 就使得它成为只能在所在的编译单元中被使用的全局变量。

4.声明和定义

int i; 变量的定义    extern int i;    (在头文件中)是变量的声明,不能初始化。

声明是不产生代码的东西,只记下来。

函数原型(声明) 变量声明  结构声明  宏声明  枚举声明  类型声明(typedef)  inline 函数

定义是产生代码的东西。(函数 全局变量)

5.头文件

只有声明可以被放在头文件中。(是规则不是法律)

否则会造成一个项目中多个编译单元里有重名的实体。

重复声明

同一个编译单元(.c)里,不能让一个结构的声明出现两次。

如果你的头文件里有结构的声明,这个头文件很难不会在一个编译单元里被 #include 多次。

所以需要 “标准头文件结构”。

6.标准头文件结构

下划线__LIST_HEAD__是为了保证不和正常的宏定义重复。

#ifndef 为条件编译指令。如果已经定义过不会再被编译,避免头文件里有重复引用的情况。

相关文章

  • 第5周:程序结构——5.3 大程序结构

    1.多个源代码文件 多个 .c 文件 main() 里的代码太长了,适合分成几个函数(把相应功能剥离出来放在函数里...

  • JavaScript程序结构

    一、程序结构(1) 认识程序结构程序结构,描述了业务处理流程,反映到代码中就是代码的执行顺序/过程;常见的程序结构...

  • 程序结构之:循环结构

    程序结构之:循环结构 · 视频课程 程序结构之:循环结构 · 课程文稿 今天,我们来学习另一种程序结构:顺序结构。...

  • 2 mysql 体系架构

    2. mysql 体系架构 连接方式TCP/IPSocket mysqld程序结构mysqld程序结构mysql程...

  • 零基础学Java第三篇之流程控制

    程序结构 顺序结构:是最简单的程序结构,也是最常用的程序结构,只要按照解决问题的顺序写出相应的语句就行,它的执行顺...

  • AHK基础入门与程序结构

    [toc] # 前言 ## 什么是程序结构? 程序结构一般指结构化程序设计,也就是说我们把程序结构化,进行以模块功...

  • Flink基础系列30-Table API和Flink SQL之

    一.基本程序结构 Table API和SQL的程序结构,与流式处理的程序结构十分类似; 也可以近似的认为有这么几步...

  • 笔记整理

    标称基础结构:程序结构· 顺序结构· 选择结构· 循环结构 程序结构:主要是用来还原处理问题的过程的 ·顺序结构:...

  • 程序结构之:顺序结构

    程序结构之:顺序结构 · 视频课程 程序结构之:顺序结构 · 课程文稿 今天,我们来学习程序的第一种结构,顺序结构...

  • 5.Golang流程控制

    一、程序结构说到流程控制,必须先看下 Go 语言的程序结构: 程序的初始化和执行都起始于 main package...

网友评论

      本文标题:第5周:程序结构——5.3 大程序结构

      本文链接:https://www.haomeiwen.com/subject/uxbkcxtx.html