基于GD32的keil5工程中,文件gd32f10x_it.c中的函数void gd_eval_led_toggle(uint32_t gpio_periph, uint32_t pin),在此文件所包含的头文件中都找不到此函数的声明,但编译结果无错误
时间: 2024-04-21 22:29:45 浏览: 154
对于这种情况,很可能是因为该函数已经在其他的头文件中被声明或定义了,而且这些头文件已经被包含在gd32f10x_it.c文件中。这意味着,虽然在gd32f10x_it.c文件中并没有显式地声明该函数,但是编译器可以在其他头文件中找到该函数的声明或定义,因此可以正常编译通过。
在实际开发中,这种情况并不是很理想,因为如果该函数的声明或定义发生了变化,可能会导致编译错误或者程序运行异常。因此,尽管可以通过编译,但是建议在每个文件中都显式地声明或者包含所需要的头文件,以确保程序的正确性和可维护性。
相关问题
keil5报错如下.\Objects\template.axf: Error: L6200E: Symbol TIMER1_IRQHandler multiply defined (by timer.o and gd32f10x_it.o).
这个错误是由于 `TIMER1_IRQHandler` 在 `timer.o` 和 `gd32f10x_it.o` 中被重复定义了所导致的。
解决这个问题的方法是在其中一个 `.c` 文件中定义该函数,并在其他文件中声明该函数。例如,在 `gd32f10x_it.c` 文件中定义该函数,然后在 `timer.c` 文件中声明该函数。这样,编译器就知道只需要使用一个定义,并且不会出现重复定义的错误。
另外,还可以使用 `static` 关键字使函数变成静态函数,这样它只能在当前文件中访问,避免了多个文件之间的命名冲突。
希望我的回答可以帮助你解决问题!
阅读全文
相关推荐

















