符号@在一个程序中被看到,但我找不到它被使用的原因。
语法是
const unsigned char Array_name[] @(INFO_Array+1) = {................};
答案 0 :(得分:2)
_mtlsmp__mtl_u
运算符的含义对于在其中编译代码的特定编译器可能有所不同。
例如,在IAR Embedded Workbench的C / C ++编译器中,@
运算符可用于placing global and static variables at absolute addresses.
如果您使用的是IAR C / C ++编译器,则编译器会将@
放在地址Array_name
中。
(INFO_Array+1)
运算符还可用于将变量或对象放置在目标文件的特定部分中:
@
以上行将uint32_t CTRL_OFFSET_x86 @ "MY_RAM_SECTION";
放在目标文件部分CTRL_OFFSET_x86
中。
MY_RAM_SECTION
也可以用于此目的。
答案 1 :(得分:-1)
对我来说,它看起来像一个编译器标志,禁止将字符串“INFO_Array + 1”解释为表达式。例如,在C#中,您可以使用@ -Operator告诉编译器将以下表达式用作String而不尝试对其进行求值。
快速的谷歌搜索显示:
例如,此行将无法编译:
int new = 1776; // 'new' is a keyword
但是,此行编译时没有错误:
int @new = 1776;