gpt4 book ai didi

c - 如何使用 C 语言中的预编译器初始化数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:40:56 25 4
gpt4 key购买 nike

我想初始化一个数组。但是我在编译时有两个不同的初始值。所以我想在预编译时完成。我的代码是

static const U8 userFont[8][8] =
{
#if (LCD_LANGUAGE == LANG_1)
{ 0x0E, 0x09, 0x09, 0x1D, 0x09, 0x09, 0x0E, 0x00 },
{ 0x03, 0x0E, 0x11, 0x10, 0x10, 0x11, 0x0E, 0x00 },
{ 0x09, 0x06, 0x0F, 0x01, 0x02, 0x04, 0x0F, 0x00 },
{ 0x0E, 0x11, 0x10, 0x10, 0x15, 0x0E, 0x04, 0x00 },
{ 0x11, 0x0E, 0x11, 0x10, 0x10, 0x11, 0x0E, 0x00 },
{ 0x19, 0x06, 0x09, 0x04, 0x02, 0x09, 0x06, 0x00 },
{ 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03 },
{ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01 }
#elif (LCD_LANGUAGE == LANG_2)
{ 0x0A, 0x00, 0x11, 0x11, 0x11, 0x11, 0x0E, 0x00 },
{ 0x04, 0x00, 0x1E, 0x04, 0x04, 0x04, 0x1E, 0x00 },
{ 0x0A, 0x00, 0x0E, 0x11, 0x11, 0x11, 0x0E, 0x00 },
{ 0x0E, 0x11, 0x10, 0x10, 0x11, 0x0E, 0x04, 0x00 },
{ 0x0F, 0x10, 0x10, 0x0E, 0x01, 0x1E, 0x04, 0x00 },
{ 0x0E, 0x00, 0x0F, 0x10, 0x17, 0x11, 0x0F, 0x00 },
{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03 },
{ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01 }

#endif
};

但是我得到这个错误:“期待一个表达”。数组末尾给出的错误。那么我该如何解决这个问题呢?

最佳答案

几个问题:

  1. 您是否使用 typedef unsigned char U8; 之类的东西定义了 U8 类型?
  2. 您是否已将 LCD_LANGUAGE 定义为 LANG_1LANG_2

我问的原因是因为下面这个小片段编译和运行得很好:

#include <stdio.h>
typedef unsigned char U8;
#define LCD_LANGUAGE LANG_1
static const U8 userFont[8][8] =
{
#if (LCD_LANGUAGE == LANG_1)
{ 0x0E, 0x09, 0x09, 0x1D, 0x09, 0x09, 0x0E, 0x00 },
{ 0x03, 0x0E, 0x11, 0x10, 0x10, 0x11, 0x0E, 0x00 },
{ 0x09, 0x06, 0x0F, 0x01, 0x02, 0x04, 0x0F, 0x00 },
{ 0x0E, 0x11, 0x10, 0x10, 0x15, 0x0E, 0x04, 0x00 },
{ 0x11, 0x0E, 0x11, 0x10, 0x10, 0x11, 0x0E, 0x00 },
{ 0x19, 0x06, 0x09, 0x04, 0x02, 0x09, 0x06, 0x00 },
{ 0x00, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03 },
{ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01 }
#elif (LCD_LANGUAGE == LANG_2)
{ 0x0A, 0x00, 0x11, 0x11, 0x11, 0x11, 0x0E, 0x00 },
{ 0x04, 0x00, 0x1E, 0x04, 0x04, 0x04, 0x1E, 0x00 },
{ 0x0A, 0x00, 0x0E, 0x11, 0x11, 0x11, 0x0E, 0x00 },
{ 0x0E, 0x11, 0x10, 0x10, 0x11, 0x0E, 0x04, 0x00 },
{ 0x0F, 0x10, 0x10, 0x0E, 0x01, 0x1E, 0x04, 0x00 },
{ 0x0E, 0x00, 0x0F, 0x10, 0x17, 0x11, 0x0F, 0x00 },
{ 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03 },
{ 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01 }
#endif
};
int main (void) {
printf ("0x%02x 0x%02x\n", userFont[0][0], userFont[2][2]);
return 0;
}

制作:

0x0e 0x0f

关于c - 如何使用 C 语言中的预编译器初始化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4095373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com