【发布时间】:2016-01-25 21:40:27
【问题描述】:
我正在为 STM32F105RC 处理器使用 ARM-GCC v4.9(2015-06-23 发布)。
我搜索了 stackoverflow.com,发现这个是为了试图说服 gcc not 优化全局变量,如下所示:
static const char AppVersion[] __attribute__((used)) = "v3.05/10.oct.2015";
然而,令我惊讶,编译器优化掉了 AppVersion 变量!
顺便说一句:我正在使用优化级别 -O0(默认)。
我也尝试使用 volatile 关键字(如其他线程所建议的那样),但它也不起作用:(
我已经尝试过(void)AppVersion;,但它不起作用...
智能编译器!?我想太聪明了……
与此同时,我在代码中的某个地方使用了printf(AppVersion);,只是为了能够保留版本...但这是一个粗鲁的解决方案:(
所以,问题是:是否有任何 other 技巧可以完成这项工作,即防止版本被 GCC 优化掉?
[编辑]:
我也试过这样(即没有static):
const char AppVersion[] __attribute__((used)) = "v3.05/10.oct.2015";
...它也没有用:(
【问题讨论】:
-
试试 ( void )AppVersion;主要的某处。
-
@this : 我已经尝试过
(void)AppVersion;但它不起作用... -
@dsi:我试过没有
static,但它不起作用:( -
我正在考虑使用更新版本的编译器(何时可用)......但我想我不会得到不同的东西,对吧?可能是浪费时间...
标签: c variables gcc optimization arm