warning:deprecated conversion from string constant to 'char *' 解決方案


#include <iostream>
using namespace std;

int fuc(char *a)
{
    cout << a << endl;
}
int main()
{
    fuc("hello");
}

Linux 環境下當GCC版本比較高時,編譯代碼可能出現的問題

問題是這樣產生的,先看這個函數原型:

void someFunc(char *someStr);

再看這個函數調用:

someFunc("I'm a string!");

把這兩個東西組合起來,用最新的g++編譯一下就會得到標題中的警告。

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

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

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

這個類型說背后的含義是:給我個字符串,我只要讀取它。

 

如何同時接收const類型和非const類型?重載

#include <iostream>
using namespace std;

int fuc(char *a)
{
	cout << a << endl;
}
int fuc(const char *a)
{
	cout << a << endl;
}
int main()
{
	char a[] = "hello 123";
	fuc(a);
	const char b[] = "hello 123";
	fuc(b);
}

結果

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM