0
存儲類別和存儲說明符在C中有什麼區別?是揮發性的存儲類或存儲說明符?volatile是c中的存儲說明符還是存儲類?
EX:static volatile int a;
無任何錯誤,但 static auto/register/extern int a;
給出編譯錯誤。
存儲類別和存儲說明符在C中有什麼區別?是揮發性的存儲類或存儲說明符?volatile是c中的存儲說明符還是存儲類?
EX:static volatile int a;
無任何錯誤,但 static auto/register/extern int a;
給出編譯錯誤。
以下是存儲類聲明並且可以有至多一個:
typedef
extern
static
auto
register
我們可以從draft C99 standard部分6.7.1
存儲類型修飾符看到這一點,其中列出了上述指定並說:
最多可以在聲明中聲明 說明符中給出一個存儲類說明符。102)
,另一方面volatile
是類型限定符我們可以從部分看到6.7.3
類型限定其中列出了以下預選賽:
const
restrict
volatile
,並說:
如果相同的限定符直接或通過一個或多個typedef在同一個 說明符限定符列表中出現多次, 的行爲與僅出現一次的行爲相同。
我們可以從語法部分中看到6.7
聲明一個聲明可以同時擁有存儲類說明和類型限定符:
declaration-specifiers:
storage-class-specifier declaration-specifiersopt
type-specifier declaration-specifiersopt
type-qualifier declaration-specifiersopt
function-specifier declaration-specifiersopt