IAR Embedded workbench 中用于 MSP430 的 MACRO 符号用法
MACRO symbol usage in IAR Embbeded workbench for MSP430
我正在尝试将宏的符号导出到模块外部,但编译器退出时显示:"Error[34]: May not be redefined"
我将一个用 IAR 汇编程序编写的程序拆分成几个模块,因为它是作为一个独特的大块代码编写的。我遇到了几个应该用作快速内联函数的宏,我试图将它们放入它们的相关模块中,并将它们作为符号导入到需要的地方。当我只将宏的 name/symbol 添加到托管它们的模块的 public 时,问题就出现了:即使不导入它,编译器也会以 "Error[34]: May not be redefined" 退出。如果可能的话,我宁愿将它们保留在相关模块中。我能做到吗?还是我理解错了?
MODULE MY_MODULE
PUBLIC GET_VALUE_XYZ
#include "msp430.h"
#include "defines.s43"
RSEG CODE
GET_VALUE_XYZ MACRO parameter_1
<...cut...>
ENDM
END
宏不是一般意义上的函数,它们为常用指令序列提供简写符号(有点像 C 中的 #define
宏)。因此,只能在定义可见的模块中引用宏。无法使用 PUBLIC
关键字将它们导出到其他模块。
可以将宏定义与其余代码分开并将它们放在单独的文件中,但是您需要使用 #include
指令包含这些文件。
我正在尝试将宏的符号导出到模块外部,但编译器退出时显示:"Error[34]: May not be redefined"
我将一个用 IAR 汇编程序编写的程序拆分成几个模块,因为它是作为一个独特的大块代码编写的。我遇到了几个应该用作快速内联函数的宏,我试图将它们放入它们的相关模块中,并将它们作为符号导入到需要的地方。当我只将宏的 name/symbol 添加到托管它们的模块的 public 时,问题就出现了:即使不导入它,编译器也会以 "Error[34]: May not be redefined" 退出。如果可能的话,我宁愿将它们保留在相关模块中。我能做到吗?还是我理解错了?
MODULE MY_MODULE
PUBLIC GET_VALUE_XYZ
#include "msp430.h"
#include "defines.s43"
RSEG CODE
GET_VALUE_XYZ MACRO parameter_1
<...cut...>
ENDM
END
宏不是一般意义上的函数,它们为常用指令序列提供简写符号(有点像 C 中的 #define
宏)。因此,只能在定义可见的模块中引用宏。无法使用 PUBLIC
关键字将它们导出到其他模块。
可以将宏定义与其余代码分开并将它们放在单独的文件中,但是您需要使用 #include
指令包含这些文件。