尘世- 2024-03-18 21:21 采纳率: 80%
浏览 11

C语言枚举数据类型初始化问题

在做一个基于STM32F103C8T6的AS608红外指纹模块的小项目。获取了指纹ID但是需要映射一下使用枚举进行定义但是无论怎么修改数据类型都有问题。

    typedef struct    
{
       char str[64];
     const char * username;
} FingerprintMap;

// 定义映射表
FingerprintMap fingerprint_map[] = 
{
    {1, "User1"},
    {2, "User2"},
    {3, "User3"},// 添加更多的指纹ID和用户名
};

User\main.c(40):错误:#144:“char *”类型的值不能用于初始化“int”类型的实体
User\main.c(44):错误:#144:“char *”类型的值不能用于初始化“char”类型的实体
类似以上的两种错误,希望给予修正和解决方案。补充:chat GPT 也没有解决。

  • 写回答

3条回答 默认 最新

  • 码农阿豪@新空间代码工作室 Java领域优质创作者 2024-03-18 21:21
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    问题分析: 根据错误提示,可以看出是数据类型不匹配导致的错误。具体来说,就是在定义映射表时,给出的指纹ID是int类型,但是在FingerprintMap结构体中使用的是char类型,因此会导致类型不匹配的错误。 解决方案:
    1. 将FingerprintMap结构体中str字段的类型改为int类型,即将char str[64]改为int str。
    2. 在定义映射表时,给出的指纹ID改为char类型,即将{1, "User1"}改为{'1', "User1"}。 示例代码: typedef struct { int str; const char * username; } FingerprintMap; // 定义映射表 FingerprintMap fingerprint_map[] = { {'1', "User1"}, {'2', "User2"}, {'3', "User3"}, // 添加更多的指纹ID和用户名 }; 通过以上的修改,就可以避免类型不匹配的错误,并成功定义映射表。
    评论

报告相同问题?

问题事件

  • 创建了问题 3月18日

悬赏问题

  • ¥15 郑州牧原测试岗值得去吗
  • ¥100 复现论文:matlab仿真代码编写
  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢