C:多文件结构

1、关于extern

  extern 是声明此变量或者函数在此文件的外部定义,只是声明作用。

   注意:c语言中对于函数的声明和定义区别明显,但对于变量几乎没有区别定义和声明

   深刻理解:从汇编的角度来说,变量或者函数定义就会占用内存空间,也就生成的相应的段地址和偏移地址,如果想要在其他的地方调用时,需要声明是EXTERN 外部定义的,这样根据extern后面的名称,编译器会自动的寻找到所定义的地址,从而利用。

2、头文件  .h

   理解头文件不要将其和c源程序搞混,例如将lcd.h  lcd.c看作是一个不可分割的整体,这样的想法是错误的。头文件为了节约处理器内存和避免重定义/*(?)*/而形成的              单独的一个文件。在里面只是“声明” 外部引用这个头文件所要用到的 变量 函数。而真正的定义是在**.c中。这样就有一个问题,如何知道哪个c文件和h文件是相关联的呢?为了解决这个问题,所以就要在c文件中引用相应的h文件,例如在lcd.c中加入代码   #include "lcd.h"  

3、引用头文件

  如果在其他文件中需要引用到某一个外部文件中定义的函数,直接在此文件中 引用 所在的头文件即可 (其实直接引用函数或者变量所在的c文件即源定义程序也可以,但是一般不这样用,因为可能会用重定义的风险)。

4、引用头文件概念的意义

  函数的声明可以在程序中写多次,但函数定义只能有一个。为了避免出现重复定义的编译错误(?)

5、头文件中常用

  #ifndef
  #define

  #endif 

  避免重定义错误(包括变量 和 函数的(但一般函数不会定义在头文件中));

6、关于处理器内存的占用

  定义(c文件中)的函数和变量不占用内存

  声明(一般在h文件中)的函数和变量分配内存。

  自我理解:在程序执行中调用的函数或变量相当于声明,分配内存/

时间: 2024-07-31 03:29:33

C:多文件结构的相关文章

Android studio project文件结构翻译

Android studio project文件结构翻译 个人翻译,用作备忘. 链接地址:https://developer.android.com/tools/projects/index.html#ApplicationModules Android Project Files Studio的项目文件和设置,设置的作用范围包含所有的module. 以以下的demo为例. .git:git版本控制的文件存放目录. .gradle:gradle执行一些编译所生成的目录 Idea: 由Intell

PE文件结构与函数导出表——详解与实例

PE文件结构与函数导出表--详解与实例 随着windows系统从Xp升级到Win7.Win8, 从32位升级到64位,PE文件结构在整体未变的情况下发生了一些小的变动,一方面是推荐的程序装载地址未采用,另一方面,导出函数序号不再是简单的升序,而是一定程度上的进行了乱序.本文首先对PE文件结构进行了详尽的解说,接着介绍了如何得出函数导出表,整个过程采用SysWoW64目录下的wininet.dll实例进行说明.在介绍过程中,明确指出了Win7.Win8等新系统相对Xp带来的区别. 文章链接:htt

Vue2+VueRouter2+webpack 构建项目实战(二):目录以及文件结构

通过上一篇博文<Vue2+VueRouter2+webpack 构建项目实战(一):准备工作>,我们已经新建好了一个基于vue+webpack的项目.本篇文章详细介绍下项目的结构. 项目目录以及文件结构 如图所示: 如上图所示,自动构建的vue项目的结构就是这样. 目录/文件 说明 build 这个是我们最终发布的时候会把代码发布在这里,在开发阶段,我们基本不用管. config 配置目录,默认配置没有问题,所以我们也不用管 node_modules 项目开发依赖的一些模块 src 开发目录(

图像处理笔记一bmp文件结构处理与显示

1.1图和调色板的概念 如今Windows(3.x以及95,98,NT)系列已经成为绝大多数用户使用的操作系统,它比DOS成功的一个重要因素是它可视化的漂亮界面.那么Windows是如何显示图象的呢?这就要谈到位图(bitmap). 我们知道,普通的显示器屏幕是由许许多多点构成的,我们称之为象素.显示时采用扫描的方法:电子枪每次从左到右扫描一行,为每个象素着色,然后从上到下这样扫描若干行,就扫过了一屏.为了防止闪烁,每秒要重复上述过程几十次.例如我们常说的屏幕分辨率为640×480,刷新频率为7

JVM总结(三):类文件结构

这一节我们来总结一下类文件结构方面的知识.目录如下: 类文件结构 字节码的意义 Class类文件的结构 Class类文件的存储形式 Class文件的格式 Class类文件结构详解 举例详解 一.写程序 二.查看生成的相应的Class文件的16进制形式 三.深入解析 类文件结构 字节码的意义 为什么存在字节码?  字节码是构成Java平台无关性的基石.实现语言无关性的基础是虚拟机和字节码存储格式.  Java语言中的各种变量.关键字和运算符的语义最终是由多条字节码命令组成,因此字节码命令所能提供的

ecsop文件结构

Ecshop文件结构 :ecshop二次开发手册,ECSHOP文件结构,ECSHOP目录详解 /*ECShop 最新程序 的结构图及各文件相应功能介绍ECShop文件结构目录┣ activity.php 活动列表┣ affiche.php 广告处理文件┣ affiliate.php 生成商品列表┣ article.php 文章内容┣ article_cat.php文章分类┣ auction.php 拍卖前台文件┣ brand.php 品牌列表┣ captcha.php 生成验证码┣ catalo

Android学习心得(16) --- Dex文件结构实例解析(2)

我在博客上发表一些我的Android学习心得,希望对大家能有帮助. 这一篇我们讲述一下通过一个实例来分析dex文件结构和组成. 参考Leb128数据类型 Android学习心得(5) --- dex数据类型LEB128 参考实例分析学习理解dex文件结构Android学习心得(15) --- Dex文件结构解析(1) 参考baksmali工具使用Android学习心得(4) --- MAC下smali文件编写与运行 1.编译 我们通过一个例子来分析dex文件的构成 创建一个Hello.java文

走入asp.net mvc不归路:[1]项目文件结构

先来了解一下一个asp.net mvc项目的文件结构. 1 项目文件结构一览 2 mvc,顾名思义,一个项目中最重要的就是这三个东西:M(Model,模型),V(View,视图),C(Controller控制器),其关系一般如下,控制器控制模型和视图,模型传数据给视图: 3 控制器就是控制整个逻辑走向的机制,可以对模型数据进行处理,也可以控制呈现在用户眼前的视图. 4 一般来说,一类的操作会放在同一个控制器中,如账号相关则放于AccountController中,里面有各种Action,即一个一

Linux文件结构及管理(1)

Linux系统其一的哲学思想为一切皆文件,在Linux系统中有众多的文件系统下面我们就对Linux文件系统做一个简单的介绍. Linux的文件类型查看方式为:file /path/to/somefile Linux文件类型有以下几种方式. 1):普通文件 - 2):目录文件 d 3) :链接文件 l 4):套接字文件 c 5):设备文件 字符设备文件 c (线性设备) 块设备文件   b  (字符设备) 6):命名管道 此图为查勘根目录的文件类型 从文件系统我们引出了目录文件,下面介绍下对于目录

linux文件结构---转发

linux各文件夹的作用---转载 linux下的文件结构,看看每个文件夹都是干吗用的/bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示 /lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件 /sbin 系统管理命令,这里存放的是系统管理员使用的管理程序 /tmp 公用的临时文件存储点 /ro