我为 LPC1114 编译,这是一个小型 ARM(实际上是 Cortex)目标。RAM 比 ROM 受限得多。我使用最新的 Mentor (CodeBenchLite) GCC 编译器 (GCC 4.6.3)。我有一些我想在 ROM 中拥有的常量对象。据我了解,下面代码中的 ffx 对象应该以 ROM(代码)结尾,而是放在 DATA 中。
class flop {
public:
int x;
constexpr flop( int x ) : x(x){}
};
extern constexpr flop ffx( 1 );
如何说服编译器预先计算对象并将其放入 ROM 中?
或者我应该问:
- 我能以某种方式期望 G++ 编译器为 ffx 生成 ROMable 数据吗
- 如果是这样,我的代码是否正确
- 如果是这样,它支持哪个 G++ 版本(我使用 4.6,也许我需要 4.7?)
========================================
这个 bugzilla 条目c++/49673似乎表明我的问题是一个已知问题,可能已在 GCC 4.7 中修复。不幸的是,我更喜欢使用 Mentor/CodeSourcery,它仍然是 4.6.3。所以我想我暂时被这个错误所困扰。:(