有朋友問我解釋爲什麼爲什麼這個常量常量常量聲明中無效
const const const const const int const i = 0;
是有效的語法。我拒絕對這個問題有任何想法。雖然我很好奇,如果它只是一個語法的東西?
編輯。標籤是C++,我的朋友正在引用gcc,所以我應該添加C標籤。
有朋友問我解釋爲什麼爲什麼這個常量常量常量聲明中無效
const const const const const int const i = 0;
是有效的語法。我拒絕對這個問題有任何想法。雖然我很好奇,如果它只是一個語法的東西?
編輯。標籤是C++,我的朋友正在引用gcc,所以我應該添加C標籤。
從n1256:
6.7.3/4
如果相同的合格音響ER出現在同一 SPECI音響ER-合格音響ER-列表不止一次,直接地或經由一個或一個以上的typedef, 的行爲與僅出現一次的行爲相同。
在C++中,這應該會給出錯誤。
從C++ 03標準:
7.1.5/1 [dcl.type]
作爲一般規則,至多一個類型說明符被允許在 完整decl-聲明的說明符序列。 此規則的唯一例外如下:
- const或volatile可以與任何其他類型說明符結合使用。但是,除了通過使用類型定義(7.1.3)或模板類型參數(14.3)引入外,多餘的cv-限定符是被禁止的,在這種情況下,忽略冗餘的cv限定符。
從N3797(C++ 11):
7.1.6/2 [dcl.type]
作爲一般規則,至多一個類型SPECI音響ER被允許在 完整的decl-speci fi er seq的聲明或在類型speci fi er seq 或trailing-type-spec-seq。唯一的例外是 如下:
— const can be combined with any type specifier except itself.
與'&'一樣,我相信。 'typedef int & t; typedef t & u;'將表示'u'和't'是同一類型。 (雖然,小心文字'&&',那是C++ 11) –
[。這不是(http://coliru.stacked-crooked.com/a/77773912987e1506) –
@GuilhermeBernal,個體標記C++ ,而不是C. -1 – lucas92
@Konrad。它是有效的C但是無效的C++。 (無意刪除) –