在C语言中本地常量的存储

3

我有一个关于C语言常量存储的问题。

如果我有以下语句:

const int a = 5;

如果该语句在全局范围内,则常量将存储在.rodata中。我一直在使用MSP430设备的TI编译器。如果该语句在局部范围内,则常量将存储在堆栈上。
我不确定如果我在局部范围内声明它为“static const”,会发生什么,但我希望它被存储在.rodata中。
这种行为是否正确?

我不了解TI编译器,但大多数编译器会将const int a = 5;类似于#define a 5处理,并不会将其存储在特定的位置。 - Bo Persson
1个回答

1

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

我曾经看到过static const被放置在.text.data.sdata等节中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接