打印
[STM32F1]

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

[复制链接]
569|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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文件包含这个状文件,
多次声明是可以的,多次定义是不行的

使用特权

评论回复
5
lyray| | 2021-1-4 21:30 | 只看该作者
把变量的定义放到C文件中

使用特权

评论回复
6
磨砂| | 2021-2-1 09:54 | 只看该作者
定义的位置不对吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

131

主题

219

帖子

2

粉丝