如何擺脫GCC中從字符串常量到'char *''警告的棄用轉換?所以我正在開發一個非常大的代碼庫,最近升級到gcc 4.3,它現在觸發了這個警告:警告:不推薦將字符串常量轉換為'char *'顯然,解決這個問題的正確方法是找到每個聲明char *s = "constant string";或函數調用如:void foo(char *s);foo("constant string");并使他們成為const char指針。但是,這意味著觸及564個文件,最小,這不是我希望在此時執行的任務?,F在的問題是我正在運行-werror,所以我需要一些方法來扼殺這些警告。我怎樣才能做到這一點?
3 回答
慕桂英546537
TA貢獻1848條經驗 獲得超10個贊
傳遞字符串文字的任何函數"I am a string literal"都應該char const *用作類型而不是char*。
如果你要解決問題,請正確解決問題。
說明:
您不能使用字符串文字初始化將要修改的字符串,因為它們是類型const char*。虛擲常量性以后修改它們是不確定的行為,所以你要復制你的const char*字符串char通過char到動態分配的char*字符串,以對其進行修改。
例:
#include <iostream>void print(char* ch);void print(const char* ch) {
std::cout<<ch;}int main() {
print("Hello");
return 0;}- 3 回答
- 0 關注
- 982 瀏覽
添加回答
舉報
0/150
提交
取消
