未使用的变量未在Map文件中分配地址

时间:2015-02-27 23:00:46

标签: c gcc linker compiler-optimization

我在C文件中有变量,在任何刚刚声明和初始化的地方都没有使用。 我希望在地图文件中为该变量分配当前未发生的内存。我想对特定文件中的所有变量进行处理。

1 个答案:

答案 0 :(得分:0)

您的编译器正在优化未使用的变量。

为了防止这种情况发生(在GCC中),您可以应用used attribute

int unreferenced_global_variable __attribute__((used)) = 42;
  

used

     

此属性附加到具有静态存储的变量,意味着即使看起来未引用该变量,也必须发出该变量。

     

当应用于C ++类模板的静态数据成员时,该属性还意味着如果实例化类本身,则实例化该成员。


在我看来,更好的解决方案是在链接描述文件中指定这些类型的变量,并在头文件中添加它们的extern定义。但这实际上取决于为什么你这样做,你没有告诉我们。