我遇到了一个奇怪的问题。 我已将我的项目从 Keil 转移到 STM32 IDE。 (基于 Eclipse 和 GCC)。 在 Keil 中我没有任何问题。但在 Eclipse 中有。 CPU是STM32F030xC
我正在定义一个结构体数组。
typedef struct
{
int width; // Character width in bits.
int offset; // Offset in bytes into font bitmap.
}
FONT_CHAR_INFO;
const FONT_CHAR_INFO microsoftSansSerif_18ptDescriptors[] =
{
{2, 0}, // !
{6, 25}, // "
{13, 50}, // #
{11, 100}, // $
等等。有 94 个元素。 数组的大小应为 8 * 94 = 752 字节 但在链接器映射中我看到大小为 744。 并且在调试器中缺少一个元素。指数为60。 内存中的 60 索引指向数组中的 61。 还存在其他元素。
也许这与数据对齐有某种关系?但数组的大小应该更大。 我正在使用未经优化的编译器。 这是怎么回事?
ASCII 表中的第 60 个元素,从 ! = 33,是代码93;前面的代码 92 是反斜杠 (\)。 C 预处理器将行末尾的反斜杠理解为继续标记,将该行与后续行合并,并且由于在此行之前有一个行注释标记 (//),因此整个组合行将作为注释被删除。
请勿在行尾添加反斜杠。
JW