我对C和代码战士中的嵌入式编程很陌生,我想知道是否有人能帮我解决问题。当我去构建我的项目时,似乎会遇到这样的链接器错误:

**** Build of configuration FLASH for project test ****

"C:\\Freescale\\CW MCU v10.6\\gnu\\bin\\mingw32-make" -j12 all
'Building target: test.elf'
'Executing target #9 test.elf'
'Invoking: ColdFire Linker'
"C:/Freescale/CW MCU v10.6/MCU/ColdFire_Tools/Command_Line_Tools/mwldmcf" -o "test.elf" @@"test.args"
C:/Freescale/CW MCU v10.6/MCU/ColdFire_Tools/Command_Line_Tools/mwldmcf|Linker|Error
>Undefined : "tFlag"
>Referenced from "TI1_OnInterrupt" in
mingw32-make: *** [test.elf] Error 1
C:/Freescale/CW MCU v10.6/MCU/ColdFire_Tools/Command_Line_Tools/mwldmcf|Linker|Error
>Link failed.

我正在使用一个带有MCF51EM系列微控制器的演示板。任何建议都将不胜感激。
谢谢您,
泰勒

最佳答案

您缺少C语言范围概念。您定义的tFlag变量是主函数中的一个局部变量。它被分配到主函数堆栈内存中,只有主函数可以通过它的名称看到它。要解决这个问题,需要将tFlag定义为主函数所在文件中的全局变量,并将其外部化到包含TI1_OnInterrupt函数的文件中。您可以在此link找到更多关于C变量作用域和关于存储类的信息,extern就是其中之一。

关于c - CodeWarrior 10.6链接器错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27031175/

10-13 05:54