【问题标题】:Is there any compiler option that disables the warning you get when you initialise a structure inline?是否有任何编译器选项可以禁用您在初始化内联结构时收到的警告?
【发布时间】:2013-02-25 07:31:42
【问题描述】:

我正在寻找允许我执行此操作的编译器设置:

[imageGraphEraserIcon imageByResampling:{20, 20} zoom:3]; 没有发出警告。现在我必须一直这样做,而且转换似乎毫无意义,因为编译器应该知道期望的类型:

[imageGraphEraserIcon imageByResampling:(CGSize){20, 20} zoom:3];

我知道“CGSizeMake”,我正在寻找更短的方法,更赏心悦目。

【问题讨论】:

  • 您真的收到警告了吗?您正在尝试的应该会产生编译器错误,而不是警告。

标签: objective-c clang


【解决方案1】:

虽然您构建的内容可以工作,但正确的 Objective-C 模式是:

[imageGraphEraserIcon imageByResampling:CGSizeMake(20, 20) zoom:3];

事实上,Apple 制作了编译器,如果您收到警告,则说明您“做错了”。编译器希望您编写 CGSizeMake 以进行类型检查。因此,这就是惯例。没有理由更喜欢匿名结构。它使您的代码不那么标准,其他人更难理解您的意图。

【讨论】:

  • 抱歉,对此不感兴趣。我也不知道你为什么认为它是“正确的 Objective-C 模式”。 {20, 20} 是匿名的且更短。
  • 它是正确的objective-c 模式,因为编译器可以检查类型是否正确,也因为它是objective-c 社区中的每个人所做的。 Objective-c 是关于约定的
  • 我认为这不是惯例。此外,编译器可以验证结构字段的类型和数量。至于你编辑,我显然不想在之后访问这些字段(可能只在 image 方法内部,但那是另一回事,因为它是铸造出来的,所以没有问题。
  • @MikeD 禁用所有警告是愚蠢的。
  • @MikeD 链接中的第二条评论显示了如何使用-Wno-"name-of-warning" 禁用特定警告。
猜你喜欢
  • 2019-11-04
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
  • 2014-07-29
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 2010-12-05
相关资源
最近更新 更多