嵌入式C编程中的全局变量重复声明问题
来源:互联网 发布:tnt刷武器软件 编辑:程序博客网 时间:2024/06/06 10:59
用C语言编写程序的时候,我们经常会遇到这样一种情况:希望在头文件中定义一个全局变量,然后包含到两个不同的c文件中,希望这个全局变量能在两个文件中共用。比如在子函数led.c的头文件led.h中声明了一个全局变量int i,而led.h即包含在main.c中,又包含在led.c中,所有有些人就天真的认为,这样就可以正常使用,但你编译的时候,就会出现如下报错:
..\OBJ\test.axf: Error: L6200E: Symbol TimingDelay multiply defined (by systick.o and main.o).
也就是说编译器认为我们重复定义了i这个变量。这是因为#include命令就是原封不同的把头文件中的内容搬到#include的位置,所以相当于main.c和led.c中都执行了一次int i,而C语言中全局变量是项目内(或者叫工程内)可见的,这样就造成了一个项目中两个变量i,编译器就认为是重复定义。
正确解决的办法如下:
(1)main.c
#include"led.h"
int i; //定义一个全局变量
(2)led.c
#include"led.h"
extern int i;//申明这个变量为外部变量,是在其他的c文件中定义的全局变量。
注意声明和定义不一样,定义会分配变量空间,而声明的话就不再分配空间,只是告诉编译器,这个变量在别的地方,我只是使用它。
阅读全文
0 0
- 嵌入式C编程中的全局变量重复声明问题
- C++重复一致地声明全局变量没有问题
- 嵌入式系统编程中的全局变量的使用
- 嵌入式C编程经验 之 全局变量
- Objective-C编程:在类的外部声明全局变量
- 嵌入式C编程经验 之 全局变量猛于虎
- 嵌入式C编程经验之全局变量猛于虎
- 嵌入式C编程经验 之 全局变量猛于虎
- 嵌入式C编程经验 之 全局变量猛于虎
- 嵌入式C编程经验 之 全局变量猛于虎
- 嵌入式C编程经验 之 全局变量猛于虎
- C语言中全局变量的定义及重复包含问题
- 全局变量的声明的问题
- c编程中的问题
- uC/OS-II中的全局变量声明
- c/c++中extern用来声明全局变量
- c/c++中extern用来声明全局变量
- C语言 全局变量定义与声明
- leetcode_668. Kth Smallest Number in Multiplication Table ? 待解决
- Javascript学习笔记(prototype对象)
- ORA-28000 帐户已被锁定的解决方法
- sublime前端插件推荐让sublime变成webstorm
- Qt Quick Controls模块
- 嵌入式C编程中的全局变量重复声明问题
- 设计模式【工厂方法模式】
- javascript 之模块化篇
- 非对称加密------RSA
- 你写的代码,是别人的噩梦吗?
- Best Reward
- 知识 | 梯度下降训练法
- 【面试】算法面试复习总结
- onscroll的用法