【发布时间】:2012-09-06 23:57:49
【问题描述】:
我在我的代码中将以下字符串声明为常量。目的是提供一种在编译输出中存储简单元数据的粗略而简单的方法。
const char myString1[] ="abc123\0";
const char myString2[] = {'a','b','c','1','2','3','\0'};
当我使用十六进制编辑器检查输出时,我看到了其他字符串常量,但没有出现“abc123”。这使我相信启用的优化导致无法编译这些行,因为它们从未在程序中被引用。
有没有一种方法可以在代码中强制编译,或者是否有另一种方法(在代码中)将此元数据放入二进制文件中?我不想对二进制后编译进行任何操作,目标是使其尽可能简单。
编译器标志
-O2 -g -Wall -c -fmessage-length=0 -fno-builtin -ffunction-sections -mcpu=cortex-m3 -mthumb
【问题讨论】:
-
我认为发布正在使用的编译器标志会有所帮助