嗨,我有以下代码,由于某种原因我得到错误,似乎无法解决原因。
warning: return makes integer from pointer without a cast
我的代码是:
long convertToInt(char *convert) {
char *p = convert;
while(*p){
if(isdigit(*p)) {
long val = strtol(p, &p, 10);
return val;
} else {
p++;
}
}
return NULL;
}
答案 0 :(得分:2)
NULL是指针,不是整数。它可以实现为#define,它扩展为0(整数常量)或((void *)0)空指针常量。如果要返回表示“发生错误”的值,您可能希望返回一个整数常量。值0和-1是传统的。
更好的是返回成功/失败的布尔状态值,并通过指针参数返回值:bool_t convertToInt(const char *s, long *value)
。有关示例,请参阅标准库函数strtol
。
答案 1 :(得分:1)
你的功能返回long
。所以将return语句更改为:
return 0L;
NULL
的一个可能定义是(void *)0
,当long
时,return
会转换为 <h3>
<div class="container">
<span class="text">
FMUs
</span>
<span class=="button">
<button type="button" class="btn btn-default btn-xs">
<span class="glyphicon glyphicon-plus"></span>
</button>
</span>
</div>
</h3>
。
答案 2 :(得分:1)
正确的代码是,假设convert
是一个带有数字的字符串:
long convertToLong(char *convert) {
long val = 0L;
char *p = convert;
while (isdigit(*p)){
val = val * 10 + (*p - '0');
p++;
}
return val;
}
答案 3 :(得分:0)
问题在于:
return NULL;
返回NULL
,但函数的返回类型为long
。
此外,您的函数名为convertToInt()
,但它返回long
,这意味着convertToLong()
函数名称。