是NSString * __unused aString和NSString __unused * aString等价的,当他们的变量声明?
是- (void)aMethod:(NSString * __unused)aString和- (void)aMethod:(NSString __unused *)aString等价的,当它们是Objective-C方法参数声明时?
如果答案是"是",我应该选择哪种形式正确?
在启用/禁用GCC_WARN_UNUSED_PARAMETER和GCC_WARN_UNUSED_VARIABLE指令时,两种情况下的两种形式似乎都相同.
我没有找到任何澄清这一点的信息.
相关主题:
两者之间存在差异.
当属性,, __unused出现在星号之前时,它会修饰整个声明列表的主要类型.所有变量都将"未使用":
__unused NSString *foo, *bar;  // OK.  All variables are unused in the statement.
NSString __unused *foo, *bar;   // OK
但是当放置后*,它只适用于第一个变量:
    NSString * __unused foo, *bar; // Unused variable 'bar'
我更喜欢,NSString * __unused foo;因为我似乎更清楚,并且当我在一个语句中声明多个变量时,不会隐藏罕见的情况.
在GCC属性语法参考提到它在第6.31:
在使用单个说明符和限定符列表的多个标识符的声明中,以逗号分隔的声明符列表中的声明符(不是第一个)之前可以出现属性说明符列表.这些属性说明符仅适用于它们出现在其声明符之前的标识符.例如,在
Run Code Online (Sandbox Code Playgroud)__attribute__((noreturn)) void d0 (void), __attribute__((format(printf, 1, 2))) d1 (const char *, ...), d2 (void)noreturn属性适用于声明的所有函数; format属性仅适用于d1.
| 归档时间: | 
 | 
| 查看次数: | 176 次 | 
| 最近记录: |