不一样的C语法(二)关键字重复

1. 奇特语法

inline inline inline void func() {}
int a = 1;
const const const b = 2;
volatile volatile volatile int c = 3;
int *restrict restrict restrict d = &a;


2. 原理浅析

            至于为什么只有const、inline、volatile、restrict这些关键字能够重复出现而不会出现语法错误,好吧,C99标准上也没有说明原因,我也就不得而知。或者是由于某些原因没有实现,或者是没有必要实现。


            不过,C99标准中第6.7.3 Type qualifiers一节以及第6.7.4 Function specifiers一节分别提及到const、volatile、restrict和inline,说明了:若这些限定词直接或通过typedef间接出现多次,其行为和只出现一次是一样的。


            所以,上面的语法看起来虽然和平常的写法有些差异,但不过只是无意义的行为而已。


            对于restrict关键字,使用GCC编译时,要加-std=c99选项方可编译通过。


转载于:https://my.oschina.net/pzc/blog/281158

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值