无法修复此错误.... "initialization makes pointer from integer without a cast"



我有这个功能...

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-转换] 字符* c = n+'0';

我希望有人可以帮助我修复它

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

我怀疑这可能是真的,如果你的monitor_write函数需要一个指针,你应该给它传递一个指向已经存在的变量的指针,比如(虽然没有看到完整的代码并不完全确定这是否是正确的解决方案(:

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

在这些语句中

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 *类型的字符串作为参数。

相关内容

最新更新