出现 "Type alt_up_character_lcd_dev could not be resolved" 错误
Getting an "Type alt_up_character_lcd_dev could not be resolved" error
数周以来,我一直在尝试使用 Nios 处理器和 DE10-Lite 板在 LCD 屏幕上显示任何内容。我终于找到了一个可能有帮助的代码,但是我一直无法摆脱这个错误消息,我找到的代码是
#include <string.h>
#include <system.h>
#include <altera_up_avalon_character_lcd.h>
int main(void)
{
alt_up_character_lcd_dev * char_lcd_dev;
// open the Character LCD port
char_lcd_dev = alt_up_character_lcd_open_dev ("/dev/character_lcd_0");
if ( char_lcd_dev == NULL)
alt_printf ("Error: could not open character LCD device\n");
else
alt_printf ("Opened character LCD device\n");
/* Initialize the character display */
alt_up_character_lcd_init (char_lcd_dev);
/* Write "Welcome to" in the first row */
alt_up_character_lcd_string(char_lcd_dev, "Welcome to");
/* Write "the DE2 board" in the second row */
char second_row[] = "the DE10 Lite";
alt_up_character_lcd_set_cursor_pos(char_lcd_dev, 0, 1);
alt_up_character_lcd_string(char_lcd_dev, second_row);
}
错误在 int main(void) 写 alt_up_character_lcd_dev * char_lcd_dev;
之后的第二行
我使用的是 DE10-Lite 板、用于连接的平台设计器和 16x2 LCD OSEPP 屏幕。
如何修复此错误?
在 header 中,typedef
对 struct
标签和 typedef
别名使用相同的名称 (alt_up_character_lcd_dev
)。
我的假设是您的编译器对此感到困惑。 (但是 gcc 没有这个问题)
要修复它,
struct alt_up_character_lcd_dev* char_lcd_dev;
可能会有帮助。
这不是编译器错误;它是来自您的 C 语言感知 IDE 或代码编辑器 (大概是基于 Eclipse 的?)的消息,它显然是混乱的(而且是错误的)。您可以忽略它并进行构建,而不管实际的编译器是如何处理它的。毫无疑问,它会构建得很好。
问题是由altera_up_avalon_character_lcd.h中alt_up_character_lcd_dev
的typedef
引起的:
typedef struct alt_up_character_lcd_dev {
/// @brief character mode device structure
/// @sa Developing Device Drivers for the HAL in Nios II Software Developer's Handbook
alt_dev dev;
/// @brief the base address of the device
unsigned int base;
} alt_up_character_lcd_dev;
请注意,typedef 别名和 struct 标记都是 alt_up_character_lcd_dev
,您的代码编辑器对此感到困惑,尽管它是完全有效的。您可以通过多种方式处理“问题”,包括:
- 忽略它,反正它会编译。
- 删除结构标签以创建
alt_up_character_lcd_dev
和匿名 struct
的别名:
typedef struct {
...
} alt_up_character_lcd_dev;
- 忽略类型别名并指定类型
struct alt_up_character_lcd_dev
在任何地方使用它 - 有点“冗长”。
数周以来,我一直在尝试使用 Nios 处理器和 DE10-Lite 板在 LCD 屏幕上显示任何内容。我终于找到了一个可能有帮助的代码,但是我一直无法摆脱这个错误消息,我找到的代码是
#include <string.h>
#include <system.h>
#include <altera_up_avalon_character_lcd.h>
int main(void)
{
alt_up_character_lcd_dev * char_lcd_dev;
// open the Character LCD port
char_lcd_dev = alt_up_character_lcd_open_dev ("/dev/character_lcd_0");
if ( char_lcd_dev == NULL)
alt_printf ("Error: could not open character LCD device\n");
else
alt_printf ("Opened character LCD device\n");
/* Initialize the character display */
alt_up_character_lcd_init (char_lcd_dev);
/* Write "Welcome to" in the first row */
alt_up_character_lcd_string(char_lcd_dev, "Welcome to");
/* Write "the DE2 board" in the second row */
char second_row[] = "the DE10 Lite";
alt_up_character_lcd_set_cursor_pos(char_lcd_dev, 0, 1);
alt_up_character_lcd_string(char_lcd_dev, second_row);
}
错误在 int main(void) 写 alt_up_character_lcd_dev * char_lcd_dev;
我使用的是 DE10-Lite 板、用于连接的平台设计器和 16x2 LCD OSEPP 屏幕。
如何修复此错误?
在 header 中,typedef
对 struct
标签和 typedef
别名使用相同的名称 (alt_up_character_lcd_dev
)。
我的假设是您的编译器对此感到困惑。 (但是 gcc 没有这个问题)
要修复它,
struct alt_up_character_lcd_dev* char_lcd_dev;
可能会有帮助。
这不是编译器错误;它是来自您的 C 语言感知 IDE 或代码编辑器 (大概是基于 Eclipse 的?)的消息,它显然是混乱的(而且是错误的)。您可以忽略它并进行构建,而不管实际的编译器是如何处理它的。毫无疑问,它会构建得很好。
问题是由altera_up_avalon_character_lcd.h中alt_up_character_lcd_dev
的typedef
引起的:
typedef struct alt_up_character_lcd_dev {
/// @brief character mode device structure
/// @sa Developing Device Drivers for the HAL in Nios II Software Developer's Handbook
alt_dev dev;
/// @brief the base address of the device
unsigned int base;
} alt_up_character_lcd_dev;
请注意,typedef 别名和 struct 标记都是 alt_up_character_lcd_dev
,您的代码编辑器对此感到困惑,尽管它是完全有效的。您可以通过多种方式处理“问题”,包括:
- 忽略它,反正它会编译。
- 删除结构标签以创建
alt_up_character_lcd_dev
和匿名struct
的别名:typedef struct { ... } alt_up_character_lcd_dev;
- 忽略类型别名并指定类型
struct alt_up_character_lcd_dev
在任何地方使用它 - 有点“冗长”。