我发现自己投射返回类型很多,以使编译器警告静音,它总是让我觉得我做错了什么。
这个例子是Objective-c
const char *strBuf = [anNString UTF8String];
[anOutputStream write:strBufr maxLength:len];
这给我一个编译器警告
-UTF8String返回const char *
和-write:maxLength:take const uint8_t *
所以,我知道没有更好的通常会添加演员来阻止唠叨并继续我的快乐方式。
这种不好的风格(就我而言),还是它的风格?
我感谢任何想法或建议。
答案 0 :(得分:0)
没有办法解决这个问题。 C,C ++和Objective-C是强类型语言。所以,只要有类似的类型转换,你就会收到编译器警告。唯一的方法是使用相同的类型,这是不可能的。这很典型。我会继续做你正在做的事情。不要忽略警告或将其关闭,因为将会有一个类型转换,这将是您要修复的错误。如果你转过警告,你就会容易受到很难找到的错误。
答案 1 :(得分:0)
这种铸造有点难看,但它是处理这种类型不匹配的最常用方法。有些编译器提供了其他方法来消除这些警告,但关闭这些警告是一个坏主意,因为有时它们真的很重要。铸造承认差异,并确保你已经考虑过任何可能的后果。
(做考虑后果。如果你只是不假思索地把事情搞错了。但是你没有这样做,似乎没有。)