warning: ISO C++ forbids converting a string constant to ‘char*‘ [-Wwrite-strings]

在linux下編寫C++代碼:linux

char* p="wqojbk";

會跳出警告:c++

warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]

這是由於在賦值操做的時候,等號兩邊的變量類型不同,那麼編譯器會進行一種叫作 隱式轉換(implicit conversion) 的操做來使得變量能夠被賦值。上面的表達式中,等號右邊的"eqojbk"是一個不變常量,在c++中叫作string literal,type是const char *,而p則是一個char指針。若是強行賦值就是將右邊的常量強制類型轉換成一個指針,結果就是咱們在修改一個const常量。編譯運行的結果會因編譯器和操做系統共同決定,有的編譯器會經過,有的會拋異常,就算過了也可能由於操做系統的敏感性而被殺掉。spa

修改方法:操作系統

const char* p="wqojbk";

或者指針

char* p=(char*)"wqojbk";
相關文章
相關標籤/搜索