[STM32F1] 为什么条件编译#ifndef没有起作用?

[复制链接]
 楼主| hwboy05 发表于 2021-1-3 22:03 | 显示全部楼层 |阅读模式
icon.h
#ifndef _ICON_H_
#define _ICON_H_
const unsigned char ICONS[]={0x1F,0x20,0x41,0x41,0x41,0x41,0x5F,0x5F,0x40,0x40,0x5F,0x5F,0x41,0x41,0x41,0x41};
#endif
在main.c和lcd.c都有包含这个头文件。KEIL编译报错:
.\HEX\LCR.axf: Error: L6200E: Symbol ICONSmultiply defined (by lcd.o and main.o).
为什么#ifndef没有起作用?

yangjiaxu 发表于 2021-1-3 22:09 | 显示全部楼层
https://www.cnblogs.com/lailai-laird/p/11688135.html
看看这篇**能否帮助到你
 楼主| hwboy05 发表于 2021-1-4 14:57 来自手机 | 显示全部楼层
加static是可以解决报错问题,但是还是想搞清楚,为什么#ifndef没有起作用?
ayb_ice 发表于 2021-1-4 15:04 | 显示全部楼层
hwboy05 发表于 2021-1-4 14:57
加static是可以解决报错问题,但是还是想搞清楚,为什么#ifndef没有起作用?

在两个文件里都定义了ICONS变量,当然提示出错

#ifndef _ICON_H_
#define _ICON_H_
只能解决一个C文件里多次包含同一头文件的问题,和这里情况不一样,这里是不同的C文件包含这个状文件,
多次声明是可以的,多次定义是不行的
lyray 发表于 2021-1-4 21:30 | 显示全部楼层
把变量的定义放到C文件中
磨砂 发表于 2021-2-1 09:54 | 显示全部楼层
定义的位置不对吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

131

主题

219

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

131

主题

219

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部