我有一些代码必须启用链接时间优化才能正常工作。我需要对以下内容进行常量表达式评估:
extern const char[] PROGMEM constantTable = {1,2,3,4,5};
:
char x = constantTable[4];
(PROGMEM 是一个 avr-gcc 构造,它将常量放在一个单独的内存部分中,该部分随后被加载到闪存而不是 ram 中,并且在执行时需要特别注意访问。但不是在编译时......)
有什么方法可以在编译时(或链接时)检测到 -flto 尚未指定,以便我可以发出错误消息?
我已经使用“-dM -E”技巧比较了有和没有 -flto 的预定义符号,似乎没有任何区别。其他技巧有什么想法吗?
(应该在链接时“评估”-flto 的 __builtin_constant_p() 吗?它不是从 gcc 5.4.0 开始的(最新的“供应商支持”avr 编译器。))