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 指令包含这些文件。