详解keil采用C语言模块化编程时全局变量、结构体的定义、声明以及头文件包含的处理方法...

news/2024/9/6 6:08:28 标签: c/c++

一、关于全局变量的定义、声明、引用:

只要是在.h文件中定义的变量,然后在main.c中包含该.h文件,那么定义的变量就可以在main函数中作为全局变量使用

方法1:

在某个c文件里定义全局变量后,在其它c文件要用,则在要用c文件里用extern进行声明。说来轻巧但还是很多同学会出问题。请看下面注意事项方可解决!

注:

(1)在定义全局变量时可同时将其初始化

(2)在用extern声明时不能再初始化,否则编译器报错

举例:有两个c文件分别为one.c和two.c,two中要用到one中的全局变量N,怎么办?

答案:在one.c中定义且初始化:u8 N = 0;

           再在two.c中声明:extern u8 N;(注:此处不能加= 0)

 

方法2:

同样对于方法1中的例子,我推荐采用方法2。

答案:在one.c中定义且初始化:u8 N = 0;

           再在one.h中用extern声明:extern u8 N;(注:此处不能加= 0)           

           最后在two.c中包含one.h:#include "one.h"     

由于方法2的可移植性较方法一要强,故采用2较好!

对方法2的总结为:全局变量的定义和初始化放在c文件中,声明放在对应的h文件中。 且要注意h文件里应仅有

相应c文件里的函数和变量的声明,和相应c文件无关的东西不应该有。

 

二、关于头文件的包含:

        头文件的包含就比较简单了:在相应c文件里一一包含所需的h文件即可。但千万不要将这些头文件全部放在c文件的相应头文件里,虽然这样会使c文件仅包含了一个头文件,看起来比较简洁,但这样会影响它的h文件的“纯洁性”。              

        在此提醒下新手们:要将c文件和其对应的h文件看成一体,即它们互相有着紧密联系;移植时,将它们同时搬走就行!

 

 

三、关于结构体类型的定义:

        1、若结构体类型只需要在某个c文件中使用,那么就在相应c文件里定义该结构体即可。

        2、若结构体类型要在多个c文件中使用,那么就应该在头文件中定义该结构体,再在要用它的文件中包含结构体定义 所在的头文件即可。

 

 

 

转载于:https://www.cnblogs.com/prayer521/p/4069050.html


http://www.niftyadmin.cn/n/516858.html

相关文章

大气压、绝压、表压、真空度认识与理解

大气会从各个方向对处于其中的物体产生压强,大气压强简称为大气压。测量大气压的仪器叫做气压计,常见的有水银气压计。一标准大气压(1atm)760毫米汞柱(mmHg)。大气压强不但随高度变…

Spring Boot 中的 @CachePut 注解是什么,原理,如何使用

Spring Boot 中的 CachePut 注解是什么,原理,如何使用 简介 在 Spring Boot 中,CachePut 注解是用于缓存的注解之一,用于更新缓存中的数据。相比于 Cacheable 注解,CachePut 注解可以用于更新缓存中的数据&#xff0…

Sql Server 存储过程中查询数据无法使用 Union(All)

Sql Server 存储过程中查询数据无法使用 Union(All) 原文:Sql Server 存储过程中查询数据无法使用 Union(All)微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询。 1、先看一段正常的SQL语句,使…

认识嵌入式工程师

嵌入式工程师做嵌入式系统设计和开发,包括硬件系统的建立和相关软件开发、移植、调试等工作。 工作内容: 嵌入式分为操作系统和硬件两个方面,就业的方向更广、更深,就业机会和入职待遇比普通软件工程师好。开发一些与硬件关系最密…

JS魔法堂:IE5~9的DragDrop API

一、前言                              《 HTML5魔法堂:全面理解Drag & Drop API》中提到从IE5开始已经支持DnD API,但IE5~9与HTML5的API有所不同,下面我们来了解一下吧! 二、IE5~9与HTML5…

Pixhawk Linux下硬件开发环境搭建

本搭建过程基于http://dev.px4.io/starting-installing-linux.html,希望大家互相交流学习。 原文:Development Environment on Linux(Linux上开发环境) We have standardized on Debian / Ubuntu LTS as the supported Linux dist…

AFNetwork作用和用法详解

AFNetwork是一个轻量级的网络请求api类库。是以NSURLConnection, NSOperation和其他方法为基础的。下面这个例子是用来处理json请求的:NSURL *url [NSURL URLWithString:"https://alpha-api.app.net/stream/0/posts/stream/global"];NSURLRequest *reque…

Ubuntu下构建PX4软件

本搭建过程基于http://dev.px4.io/starting-building.html,希望大家互相交流学习。 原文:Building PX4 Software(构建PX4软件) PX4 can be built on the console or in a graphical development environment / IDE.(PX…