0

我的代码片段包含(36 和 37 是行号):

36     char* colon_unit = extract_colon_unit( zPath, path, &p_index);
37     if (colon_unit == NULL)

在编译期间,我收到警告:

ac:36:警告:初始化使指针从整数而不进行强制转换

当我删除指针时,

char colon_unit = extract_colon_unit( zPath, path, &p_index );

表明:

ac:37: 警告:指针和整数之间的比较

我该如何解决?

4

1 回答 1

2

这意味着该函数extract_colo_unit()返回一个字符 (char) 而不是字符指针 ( char*)。当您将数据类型更改colon_unit为 char 时,您将不会收到第一个错误,因为现在变量和分配的值都具有相同的类型。

但是,当您将colon_unitNULL 与 NULL 进行比较时,您就是在比较一个字符,即colon_unit与一个指针进行比较。也就是说,NULL 被定义为(void*)0,所以你在第 37 行得到第二个错误。

解决方案完全取决于您的逻辑以及从此函数返回 NULL 的含义。但如果是错误情况或没有有效值的情况,它只返回 0 而不是 NULL,并在第 37 行与 0 进行比较。

于 2012-05-09T11:53:02.087 回答