【问题标题】:Storage of local constants in C在 C 中存储局部常量
【发布时间】:2012-11-17 06:09:48
【问题描述】:

我有一个关于在 C 中存储常量的问题。

如果我有以下陈述:

const int a = 5;

如果语句在全局范围内,则常量将存储在 .rodata 中。 我一直在为 MSP430 器件使用 TI 编译器。如果语句在本地范围内,则常量存储在堆栈中。

我不确定如果我在本地范围内将其声明为“静态常量”会发生什么,但我希望它存储在 .rodata 中。

这种行为正确吗?

【问题讨论】:

  • 我不了解 TI 编译器,但大多数编译器会将 const int a = 5;#define a 5 类似,并且不会将其存储在任何特定位置。

标签: c linker elf


【解决方案1】:

没有“正确”的行为。平台、工具链类型和版本、操作系统、编译器和链接器设置都会对变量最终所在的部分产生巨大影响。

我看到static const 被放入.text.data.sdata 等。

【讨论】:

    猜你喜欢
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    相关资源
    最近更新 更多