无法解决此错误。...“初始化使指针从整数开始而没有强制转换”

时间:2019-12-24 21:25:08

标签: c

我有这个功能...

  void monitor_write_hex(u32int n)
       {
           if(n <= 9) {
               char *c = n+'0';
               monitor_write(c);
           } else {
               char *c = n+'7';
               monitor_write(c);
           }
       }

我得到了错误:

  

monitor.c:149:13:警告:初始化使指针从整数开始   没有强制转换[-Wint-conversion] char * c = n +'0';

我希望有人能帮助我解决问题

2 个答案:

答案 0 :(得分:0)

在作业左侧的char *c = n+'0'行(以及下面类似的行)中,您有char *c(指向char的指针),右侧有一个整数值n+'0'中的。编译器警告您,您很可能不想将一种类型分配给另一种类型。

我怀疑这可能是真的,并且如果您的monitor_write函数需要一个指针,则应将其传递给一个已经存在的变量的指针,例如(尽管看不到完整的代码并不能完全确定是否是正确的解决方案):

char c = n+'0';
monitor_write(&c);

答案 1 :(得分:0)

在这些声明中

   char *c = n+'0';
   char *c = n+'7';

您正在声明一个指针,但使用整数对其进行初始化。

似乎您是说类似以下内容

   void monitor_write_hex(u32int n)
   {
       if(n <= 9) {
           char c[2] = { n+'0' };
           monitor_write(c);
       } else {
           char c[2] = { n+'7' };
           monitor_write(c);
       }
   }

假设函数monitor_write等待着类型为char *的字符串作为参数。