c-静态常数存储在哪里



如果一个常量是全局定义的,那么它将转到text段。局部常量被推送到stack上。静态变量被存储到databss段中,这取决于它是否在适当的位置初始化以及用什么初始化。

static const呢?这个问题链接到另一个问题,这个问题只涉及静态变量,而不是常量。我认为静态常量应该作为只读变量存储在text段中,但我不确定。它通常存放在哪里?

static const可以在编译时折叠。如果不是,则将其存储在databss段中,就像它是static一样(但其他模块无法链接到它(。将它存储在text段中是有效的,但很少有编译器这样做。我只在RAM/ROM区别很重要的嵌入式编译器中见过它。较新的工具链通常有一个rodata段,它采用静态和全局常量。

最新更新