@character在GNUC预处理器中做什么

@character在GNUC预处理器中做什么,c,C,我在STM8S MCU的gnu C编译器中遇到了这行代码 #define DEF_8BIT_REG_AT(NAME,ADDRESS) volatile unsigned char NAME @ADDRESS 这是一个定义CPU内部寄存器的宏。然而,我似乎找不到任何关于@character用法的描述。我见过使用#@在字符周围加引号,但从未见过使用@本身。 如果有人能解释一下这个宏中@字符的用法,我将不胜感激。如果你是在猜测,请不要发表评论……除非你确实知道。另外,我知道他们想做什么,所以不要试图

我在STM8S MCU的gnu C编译器中遇到了这行代码

#define DEF_8BIT_REG_AT(NAME,ADDRESS) volatile unsigned char NAME @ADDRESS
这是一个定义CPU内部寄存器的宏。然而,我似乎找不到任何关于@character用法的描述。我见过使用#@在字符周围加引号,但从未见过使用@本身。 如果有人能解释一下这个宏中@字符的用法,我将不胜感激。如果你是在猜测,请不要发表评论……除非你确实知道。另外,我知道他们想做什么,所以不要试图向我解释C预处理的基础知识。我是一名拥有30多年经验的软件工程师。i、 我只是对宏中@字符的使用感兴趣。 如果可能,请提供链接。
提前感谢。

它不是预处理器的一部分,与预处理器无关。它是C编译器的一个扩展,允许您在特定的内存位置放置符号。它不是标准的C。事实上,我很确定它不是gcc的一部分(这就是你所说的“GNUC编译器”?),我见过它在其他编译器中使用,比如IAR或uVision


例如,请参见可从其网站下载的ST tools中的代码来源。它是定义CPU内部寄存器的包含文件。使用MingWGCC编译器构建。非常感谢。这对我来说是对的。有更多可移植的方法可以做到这一点,但如果它奏效。。。。再次感谢。