基础不牢,地动山摇,最近单片机编程又遇到一个基础问题。

我在头文件中定义了一个常量同时给两个驱动文件使用,封装的时候编译没问题,但是在main函数中引用驱动函数的时候就出现了重定义的问题,如下如所示。

Keil编程不同驱动文件引用同一个常量的处理方法-LMLPHP

解决方法很多,例如放弃包含头文件,在驱动中extern常量等等。但是最规范的方法是使用C语言定义复用的规范:即在 C文件中定义,在头文件中extern声明,需要使用的地方引用这个头文件。

如下图所示:

Keil编程不同驱动文件引用同一个常量的处理方法-LMLPHP

Keil编程不同驱动文件引用同一个常量的处理方法-LMLPHP

某些头文件内部定义了变量(比如屏幕字库),一般只由一个C文件引用的话问题不大,懂具体编译原理的大佬还请不吝赐教。

05-14 23:55