我有这个功能...
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';
我希望有人能帮助我解决问题
答案 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 *
的字符串作为参数。