總網頁瀏覽量

2016年11月16日 星期三

[C/C++] warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

程式發生這個 Warning
warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]

問題在於某個要呼叫的函式

ClassName::Function("AAAA: \n%s", str.c_str());

到 ClassName class 的 Function 的位置看這個函式

static void ClassName(char *format,...);

那修改就是加個 const

static void ClassName(const char *format,...);

靜態的字串不能變動, 再函式呼叫要加 const


Linux 環境下所使用的GCC或是編譯程式版本在目前最新的情況下會出現,

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

為什麼呢?原來char *背後的含義是:給我個字符串,我要修改它。

而理論上,我們傳給函數的字面常量是沒法被修改的。

所以說,比較和理的辦法是把參數類型修改為const char *。

很自然的延伸一下。

如果我既要傳字面常量又要傳字符串變量怎麼辦呢?......重載

說明的參考網站: https://read01.com/K88LP.html 從這裡看到上面這段的
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

沒有留言:

張貼留言