不一样的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选项方可编译通过。


你可能感兴趣的:(c,语法,标准,特殊)