完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
这个问题可能是由于以下几个原因导致的:
1. **头文件包含顺序**:如果main.c和stm32f4xx_it.c都包含了a.h,那么在编译过程中,这两个文件中的a.h都会被包含进去。如果a.h中定义了全局变量,那么在main.c和stm32f4xx_it.c中都会生成这两个变量的定义。为了避免这个问题,可以将全局变量的定义放在a.c文件中,然后在a.h中声明为外部变量。 2. **头文件的重复包含**:如果a.h被重复包含在main.c和stm32f4xx_it.c中,可能会导致全局变量被多次定义。为了避免这个问题,可以在a.h文件中使用预处理指令`#ifndef`、`#define`和`#endif`来防止头文件的重复包含。例如: ```c #ifndef A_H #define A_H // 全局变量声明 extern uint32_t systickCount; extern uint32_t systickFlag; #endif // A_H ``` 3. **文件路径问题**:你提到a.c、a.h和main.c、stm32f4xx_it.c不在同一个文件夹下。这可能导致编译器在搜索头文件时出现问题。确保在项目设置中正确设置了包含文件的路径,以便编译器能够找到所需的头文件。 4. **编译单元问题**:如果全局变量在不同的编译单元(即不同的.c文件)中定义,它们将具有不同的地址。为了解决这个问题,可以将全局变量的定义放在一个单独的.c文件中(例如a.c),然后在其他.c文件中包含a.h以声明这些变量为外部变量。 综上所述,为了避免这个问题,你可以尝试以下步骤: 1. 确保a.h中使用`#ifndef`、`#define`和`#endif`防止头文件重复包含。 2. 将全局变量的定义放在a.c文件中,然后在a.h中声明为外部变量。 3. 确保在项目设置中正确设置了包含文件的路径。 4. 避免在不同的编译单元中定义相同的全局变量。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1933 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1710 浏览 1 评论
1187 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
785 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1752 浏览 2 评论
1992浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
827浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
279浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
638浏览 3评论
645浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-3 03:04 , Processed in 1.367762 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号