当前位置: 首页 > news >正文

江苏网站备案要求中国产品网

江苏网站备案要求,中国产品网,福建福州罗源建设局网站,大良营销网站建设好么在使用C语言编写程序时,经常会遇到这样的情况:我们希望在头文件中定义一个全局变量,并将其包含在两个不同的C文件中,以便这个全局变量可以在这两个文件中共享。举个例子,假设项目文件夹"project"下有三个文件…

在使用C语言编写程序时,经常会遇到这样的情况:我们希望在头文件中定义一个全局变量,并将其包含在两个不同的C文件中,以便这个全局变量可以在这两个文件中共享。举个例子,假设项目文件夹"project"下有三个文件:main.c、common.c和common.h。在这种情况下,我们希望声明一个字符型变量"key",使其在main.c和common.c中都可以被使用。

一种方法是在common.h文件中声明一个unsigned char类型的变量"key",然后由于main.c和common.c都包含了该头文件,因此这个"key"变量在两个文件中都是可见的,从而实现了共用。

回想起来确实有道理,但实际上在编写代码时,我们发现编译器给出了错误提示,大致是这样的:错误:L6200E:符号key重复定义(由common.o和main.o定义)。这意味着编译器认为我们重复定义了名为"key"的变量。造成这个问题的原因是#include命令会直接将头文件中的内容复制到#include的位置,导致main.c和common.c中都有了一份unsigned char key的定义。在C语言中,全局变量在整个项目(或称为工程)内都是可见的,因此项目中就存在了两个名为"key"的变量,编译器因此判定为重复定义。

正确的解决方法是使用extern关键字来声明变量为外部变量。具体做法是在其中一个c文件中定义全局变量"key",然后在另一个需要使用"key"的c文件中使用extern关键字进行声明,表明这个变量是在其他c文件中定义的全局变量。请注意我在这里所用的术语:定义和声明。例如,在main.c文件中定义变量"key",然后在common.c文件中使用extern关键字声明"key"为外部变量,这样这两个文件就能共享同一个变量"key"了。

(1)main.c文件

```c

#include "common.h"

unsigned char key_value;

```

(2)common.c文件:

```c

#include "common.h"

extern unsigned char key_value;

```

其实这就是变量定义和变量声明的区别。变量定义使用“数据类型+变量名称”的形式,编译器需要为其分配内存空间。而变量声明使用“extern 变量类型+变量名称”的形式,是告诉编译器该变量将在其他外部c文件中定义,此处只是引用它。编译器不会为其分配内存空间,直到遇到真正的变量定义时才会分配。

1、将普通变量定义为全局变量

如果是普通类型的变量,完全可以不使用*.h文件,在*.c文件中直接定义它,在调用该变量的文件中使用extern关键字进行声明。因为对于普通类型的变量,编译器是可以识别的。例如,在my.c文件中,我定义了一个char类型的数组name[10],那么在其他文件中只需使用extern char name[](由于是声明,数组的大小可以省略,但不建议使用指针,因为指针和数组有所不同)进行外部声明。这告诉编译器这个变量我已经定义过了,在其他地方具体怎样定义,你慢慢找吧。

2、将自定义结构体类型定义为全局变量

与普通类型不同,编译器不会自动识别我们自定义的类型,除非我们预先告知编译器。在这种情况下,头文件*.h的出现就很重要了。为了避免结构体类型占用额外的内存,我们可以将大结构体的定义放在*.h文件中。这样,无论多少次引用该头文件,内存都不会重复占用。而且这样做还有一个好处,其他文件可以通过include这个*.h文件,使得编译器可以识别我们的自定义类型。这样,我们就达到了预期的目的。

typedef struct _POSITION

int x;

int y;

}POSITION;

那么我可以在一个global.c文件中实现全局变量的定义,不过要include那个*.h文件,比如

/* ***global.c ******* */

include “global.h”

POSITION current,;

这样就定义了cunrrent这个变量,在别的文件中引用这个变量时,只要extern POSITION current;进行声明,然后就可以用了,不过这个文件也还得include "global.h" 因为如果不包含,在这个文件中是不识别POSITION类型的。

1.如何引用一个已经定义过的全局变量?

回答:可以通过引用头文件的方式,也可以使用extern关键字。如果通过引用头文件方式来引用头文件中声明的全局变量,假设我们在引用时出现了拼写错误,编译期间会报错,但如果我们使用extern关键字引用时出现了同样的错误,编译期间不会报错,而是在连接期间才会报错。

2.全局变量可不可以在多个.C文件中定义?为什么?

回答:可以。在不同的C文件中,可以用static关键字来声明同名的全局变量。虽然可以在不同的C文件中声明同名的全局变量,但前提是其中只能有一个C文件对该变量赋予初值,否则会在连接时报错。

关注私信小编,带你遨游代码世界!分享资料,学习方法,奇牛编程助你一臂之力!

http://www.fp688.cn/news/155218.html

相关文章:

  • 网上商城开发费用宁波seo基础入门
  • 建设银行网站网址是什么百度网页入口官网
  • 营销型网站建设标准seo检测
  • 网站做外链好不好b2b平台有哪几个
  • 自己做网站网页文件在哪里重庆高端品牌网站建设
  • wordpress 留言板插件福州seo快速排名软件
  • 带引导页的网站痘痘该怎么去除效果好
  • 广州网站建设加q.479185700网站公司
  • 四海网络网站建设建站网站在线客服系统 免费
  • 网站开发进程报告中国第一营销网
  • 学敏网站建设人民日报新闻
  • 建设银行潍坊支行网站百度搜索热度排名
  • 福建漳州网站建设公司网络营销的概念是什么
  • 安康网站建设公司关键词seo资源
  • 备案期间能否做网站解析线上营销方式
  • 旅游网站开发的国内外现状地推推广平台
  • wordpress数据连接失败1223免费seo工具大全
  • 华为建站网站推广优化方案
  • 大连市公众平台网站黄页网络的推广网站有哪些软件
  • 今日头条今天的最新新闻深圳专业seo外包
  • 西安做网站公司玖佰网络策划公司一般怎么收费
  • 域名网站建设如何优化培训体系
  • 影视制作做的好的有什么网站开发一个app需要多少钱?
  • 凉山州建设局网站百度云盘资源共享链接群组链接
  • 即墨做网站的北京seo推广系统
  • 本科毕业设计代做网站百度在全国有哪些代理商
  • 免费企业推广网站网络推广平台哪家公司最好
  • wordpress 添加下载按钮网站搜索优化技巧
  • app 设计网站建设百度大数据官网
  • 武汉做网站便宜百度云资源搜索引擎入口