我遇到了一个奇怪的问题。我已将我的项目从 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 预处理器将行末尾的反斜杠理解为继续标记,将该行与后续行合并,并且由于在此行之前有一个行注释标记 (//),因此整个组合行将作为注释被删除。
不要在行尾放置反斜杠。
杰威