如何通过函数参数传递不同的值(值类型)?

问题描述 投票:0回答:1

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
函数。

是否有解决方案来解决代码中的警告,而不是懒惰地告诉编译器忽略此类警告?

c
1个回答
0
投票

是否有解决方案来解决代码中的警告,而不是懒惰地告诉编译器忽略此类警告?

是的,将值转换为目标值。

Collection.add(coll, (void*)2500);
© www.soinside.com 2019 - 2024. All rights reserved.