我在C文件中有变量,在任何刚刚声明和初始化的地方都没有使用。 我希望在地图文件中为该变量分配当前未发生的内存。我想对特定文件中的所有变量进行处理。
答案 0 :(得分:0)
您的编译器正在优化未使用的变量。
为了防止这种情况发生(在GCC中),您可以应用used attribute:
int unreferenced_global_variable __attribute__((used)) = 42;
used
此属性附加到具有静态存储的变量,意味着即使看起来未引用该变量,也必须发出该变量。
当应用于C ++类模板的静态数据成员时,该属性还意味着如果实例化类本身,则实例化该成员。
在我看来,更好的解决方案是在链接描述文件中指定这些类型的变量,并在头文件中添加它们的extern
定义。但这实际上取决于为什么你这样做,你没有告诉我们。