我有这个功能...
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 *
类型的字符串作为参数。