const——error: variably modified ‘buf’ at file scope

const變量在C和C++之中還是有不少區別的。在C中,const修飾的變量一般只當成“只讀的”,而不是將其作爲一個常量。因此如果像下面這樣聲明

const int SIZE;   // legal in C


不過在C++中,const修飾的變量都是常量,這和直接使用0,1,2...以及字符串”open file error!“一樣,所以在聲明的時候都需要賦值。

如果只是這樣聲明

const int SIZE;     //illegal in C++
是錯誤的。必須這樣聲明:

const int SIZE = 100;    //legal in C++

由於const修飾的變量在C中不能直接當成常量,所以如果在全局聲明數組,不能使用const變量做下標。比如

const int SIZE = 100;
char buf[SIZE];        // illegal in C, but legal in C++

如果在C語言這樣用就會報錯——error: variably modified ‘buf’ at file scope。但是如果在C++中由於SIZE會當成常量存儲在堆棧特殊的位置,所以可以正確使用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章