【问题标题】:how to place a global variable in another section如何将全局变量放在另一个部分
【发布时间】:2020-07-09 01:15:22
【问题描述】:

我想知道是否有一个宏可以用来将全局变量放在另一个部分中。 即 my_array 将存储在 bss 中。因为它没有初始化,但我想把它放在 .data 部分。

uint8_t my_array[]; 

int main()
{
  return 1;
}

【问题讨论】:

  • 什么编译器? .
  • 发布感兴趣的编译器,否则问题没有一般答案。
  • A) 为什么? B) 为什么?
  • 由于array[] 只有一个“类型”而没有大小,所以它不太可能出现在生成的可执行文件中的任何位置。建议给该数组一个特定的大小,即uint8_t my_array[1024]; 并在代码主体的某处引用它。
  • 对不起,我忘记放尺码了。我也在使用 gcc。看起来 dbush 得到了我想要的东西。

标签: c macros compiler-construction global-variables


【解决方案1】:

如果你使用 gcc,你可以使用 __section__ 属性来设置部分:

__attribute__((__section__(".data")))
uint8_t my_array[5];

请注意,您还需要为其设置大小,否则您只有声明而不是定义。

【讨论】:

    猜你喜欢
    • 2019-10-15
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2019-11-06
    • 1970-01-01
    • 2020-03-25
    • 1970-01-01
    相关资源
    最近更新 更多