如何解决C99可以在类型的右侧显示类型修饰符
我喜欢将类型限定符放在类型的右边,特别是对于指针声明,因为它使使用right-left rule读取声明更容易。 例如
uint8_t volatile * const p_foo; // p_foo is a const pointer to a volatile uint8_t
在C99中将类型限定符置于类型的右侧是合法的。但是像signed
和long
这样的类型修饰符呢?
例如
`int signed const * const p_bar; // is it legal in C99 to put 'signed' to the right of 'int'?`
FWIW gcc -std=c99 -pedantic-errors
对此没有任何影响。
解决方法
在ISO/IEC 9899:TC3第2章第6.7.2节中
每个声明的声明说明符以及每个struct声明和类型名称的说明符限定符列表中应至少提供一个类型说明符,每个类型说明符列表应为以下集合之一(以逗号分隔) ,当一行上有多个集时);类型说明符可以以任何顺序出现,并且可能与其他声明说明符混合在一起。
由于int
,char
等本身就是说明符,因此我认为答案是“是的,将signed int
转换为int signed
的顺序是合法的”
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。