如何以简洁形式使用GNU风格的多个__attribute__属性?
解决多个GNU annotate属性的简洁写法问题
嘿,这问题我熟!你之前尝试的简洁写法出错是因为没遵守GNU属性的语法规则——属性列表必须被包裹在一对双括号((...))内部,多个属性用逗号分隔就可以了。
正确的简洁写法应该是这样:
void __attribute__((annotate("a"), annotate("b"))) fff() {}
为什么你的尝试不生效?
你之前写的void __attribute__(annotate("a"), annotate("b")) fff(){}少了一层括号:GCC规定__attribute__的参数必须是((属性列表))的形式,属性列表里可以放任意多个用逗号分隔的属性项。你直接把两个annotate作为__attribute__的独立参数,编译器根本识别不了这是合法的属性声明。
补充说明
其实不仅是annotate属性,所有GNU风格的属性都可以用这种方式合并:只要把多个属性放在同一个__attribute__((...))里,用逗号隔开就行,完全不需要写多个__attribute__前缀。
内容的提问来源于stack exchange,提问作者ignorer
相关产品推荐
相关产品推荐

