【问题标题】:What is the use of @ symbol in c languagec语言中@符号有什么用
【发布时间】:2014-05-19 11:53:38
【问题描述】:

在一个程序中看到符号@,但我找不到为什么要使用它。

语法是

 const unsigned char Array_name[] @(INFO_Array+1) = {................};

【问题讨论】:

  • 你确定程序是用纯 C 编写的(而不是用 Objective-C 的部分)?
  • 可能确实是Objective-C。 Boxed expressions 我想。
  • 我认为这是一个嵌入式 C @user3652454
  • 也许是一个名为 @ 的普通 C 宏?例如#define @(_) 或某些属性。
  • #define INFO_Array 0x1900 const unsigned char Array_name[] @(INFO_Array+1) = {................};

标签: symbols


【解决方案1】:

@ 运算符的含义对于编译代码的特定编译器可能不同。

例如,在 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

#pragma location 也可用于此目的。

【讨论】:

    【解决方案2】:

    对我来说,它看起来像是一个编译器标志,用于禁用将字符串“INFO_Array+1”解释为表达式。例如,在 C# 中,您可以使用 @-Operator 告诉编译器将以下表达式用作 String 而不尝试对其求值。

    快速谷歌搜索显示:

    比如这行会编译失败:

    int new = 1776;   // 'new' is a keyword 
    

    但是,这行编译没有错误:

    int @new = 1776;
    

    【讨论】:

      猜你喜欢
      • 2021-07-01
      • 1970-01-01
      • 2017-07-31
      • 1970-01-01
      • 2011-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多