简历限定词重复

时间:2018-11-22 06:47:06

标签: c++ const volatile

我有一段简单的代码:

const const int a = 10;

它无法使用 gcc 进行编译:

error: duplicate 'const'

但是 clang 编译时会显示警告:

warning: duplicate 'const' declaration specifier [-Wduplicate-decl-specifier]

Microsoft编译器还会生成警告。

使用volatile限定词的情况也相同。

从[dcl.type](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/n4713.pdf):

  

通常,在声明的完整decl-specifier-seq中或在define-type-specifier-seq中最多允许有一个type-type-specifier,而在类型说明符序列。   该规则的唯一例外如下:

     

(2.1)       const可以与除自身以外的任何类型说明符组合。

     

(2.2)       volatile可以与除自身以外的任何类型说明符组合。

     

(2.3)       有符号或无符号可以与char,long,short或int结合使用。

     

(2.4)       short或long可以与int组合。

     

(2.5)       long可以与double结合。

     

(2.6)       long可以与long结合使用。

因此,我不太了解“一般规则”的含义。这正式有效吗?

我也找到了相关的问题Duplicate const qualifier allowed in C but not in C++?,但是讨论主要是关于c和c ++的区别。

0 个答案:

没有答案