我的代码片段包含(36和37是行号):
36 char* colon_unit = extract_colon_unit( zPath, path, &p_index);
37 if (colon_unit == NULL)
在编译期间,我收到警告:
a.c:36:警告:初始化从没有强制转换的整数生成指针
当我删除指针时,
char colon_unit = extract_colon_unit( zPath, path, &p_index );
它显示:
a.c:37:警告:指针和整数之间的比较
我该如何解决?
答案 0 :(得分:2)
这意味着函数extract_colo_unit()
返回一个字符(char)而不是字符指针(char*
)。当您将colon_unit
的数据类型更改为char时,您将不会收到第一个错误,因为现在变量和赋值的值都具有相同的类型。
但是当你将colon_unit
与NULL进行比较时,你会将一个字符(即colon_unit
)与一个指针进行比较。也就是说,NULL定义为(void*)0
,因此您在第37行得到第二个错误。
解决方案完全取决于您的逻辑以及从此函数返回NULL的含义。但如果是错误情况或没有有效值的情况,它只返回0而不是NULL,并在第37行中与0进行比较。