【问题标题】:Getting an "Type alt_up_character_lcd_dev could not be resolved" error收到“无法解析类型 alt_up_character_lcd_dev”错误
【发布时间】:2021-07-21 02:40:20
【问题描述】:

几周以来,我一直致力于尝试使用 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 屏幕。

如何解决这个错误?

【问题讨论】:

  • 你检查过altera_up_avalon_character_lcd.h 是否真的被收录了吗?
  • 尝试#include "altera_up_avalon_character_lcd.h" 如果它有效。
  • 我把它切换到""altera_up_avalon_character_lcd.h",它不起作用。
  • 现在是Multiple markers at this line, Line breakpoint: hello_world.c [line: 31], Type 'alt_up_character_lcd_dev could not be resolved
  • 试试struct alt_up_character_lcd_dev * char_lcd_dev;?

标签: c++ embedded nios


【解决方案1】:

header 中,typedefstruct 标记和typedef 别名使用相同的名称(alt_up_character_lcd_dev)。

我的假设是您的编译器对此感到困惑。 (但gcc 没有这个问题)

修复它,

struct alt_up_character_lcd_dev* char_lcd_dev;

可能会有帮助。

【讨论】:

    【解决方案2】:

    这不是编译器错误;这是来自您的 C 语言感知 IDE 或代码编辑器 的消息(可能是基于 Eclipse 的?),它显然是混乱的(和错误的)。您可以忽略它并构建,而不管实际的编译器是做什么的。毫无疑问,它会构建得很好。

    问题是由altera_up_avalon_character_lcd.halt_up_character_lcd_devtypedef引起的:

    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 - 有点“罗嗦”。

    【讨论】:

      猜你喜欢
      • 2019-12-26
      • 1970-01-01
      • 2021-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-31
      相关资源
      最近更新 更多