程式發生這個 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 從這裡看到上面這段的
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
沒有留言:
張貼留言