GCC 编译器给我以下消息:
warning: passing argument 2 of ‘Collection.add’ makes pointer from integer without a cast [-Wint-conversion] 93 | Collection.add(coll, 2500); | ^~~~ | | | int note: expected ‘void *’ but argument is of type ‘int’
首先:我明白它告诉我什么,我只是想看看当我通过 int
时它会做什么,而预期会出现
void*
。我可以......嗯......有点接受这个警告,但我觉得这不应该放在一个精美的库中公开发布。
第二:我可以使用
-Wint-conversion
选项来禁用警告。但是,如果我们想要一个警告,如果有人在另一个函数调用中执行此操作,而开发人员应该收到警告,那么该怎么办?对于一些可能未定义的结果?
我可以编写另一个接受
int
值的方法。但随后我必须为每个其他原语编写一个值...然后 char*
带有它自己的 add
函数。
是否有解决方案来解决代码中的警告,而不是懒惰地告诉编译器忽略此类警告?
是否有解决方案来解决代码中的警告,而不是懒惰地告诉编译器忽略此类警告?
是的,将值转换为目标值。
Collection.add(coll, (void*)2500);