@字符在gnu C预处理器中做了什么

时间:2015-10-17 05:48:35

标签: c

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

#define DEF_8BIT_REG_AT(NAME,ADDRESS) volatile unsigned char NAME @ADDRESS

这是定义一个定义CPU内部寄存器的宏。但是,我似乎无法找到使用@字符的任何描述。我已经看到使用#@一起在一个角色周围放置引号,但从来没有使用它自己的@。 如果有人能解释在这个宏中使用@字符,我会很感激。如果你猜测,请不要发表评论....只有你确切知道。另外,我知道他们想要做什么,所以不要试图向我解释C预处理的基础知识。我是一名拥有30多年经验的软件工程师。即我只对在宏中使用@字符感兴趣。 请尽可能提供链接。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

它不是预处理器的一部分,与预处理器无关。它是C编译器的扩展,允许您将符号放在特定的内存位置。它不是标准C.实际上,我很确定它是不是 gcc的一部分(就是你的意思是" gnu C编译器"?)I& #39;已经看到它在其他编译器中使用,例如IAR或uVision。

例如,请参阅this question