GCC+STM32:数组中缺少一个元素

问题描述 投票:0回答:1

我遇到了一个奇怪的问题。 我已将我的项目从 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。 还存在其他元素。

也许这与数据对齐有某种关系?但数组的大小应该更大。 我正在使用未经优化的编译器。 这是怎么回事?

gcc stm32 eclipse-cdt
1个回答
0
投票

ASCII 表中的第 60 个元素,从 ! = 33,是代码93;前面的代码 92 是反斜杠 (\)。 C 预处理器将行末尾的反斜杠理解为继续标记,将该行与后续行合并,并且由于在此行之前有一个行注释标记 (//),因此整个组合行将作为注释被删除。

请勿在行尾添加反斜杠。

JW

© www.soinside.com 2019 - 2024. All rights reserved.