VS2019【C++報錯】E0144"const char *" 型別的值不能用於初始化 "char *" 型別的實體

阿川_Lidar發表於2020-03-26

利用VS2019編寫以下C風格的程式碼時,會出現E0144報錯:

	char* text = "Hello world";
	//初始化字元型指標出現報錯


網上查了一下,一部分人說是vs版本相容性問題,新版本vs2017,2019都會遇到這個問題,新版本vs對此有更嚴格的要求。

目前總結到了3種解決方法,親測有效,可以根據你的使用習慣選擇一種方法。

  • 方法1,不改程式碼,修改專案屬性。專案>>屬性>>C/C++>>語言>>符合模式,將符合模式由是改為否(優點是不需要修改程式碼,缺點是每寫新的專案就要修改一次設定)
  • 方法2,修改程式碼,先用另外的字元陣列儲存Hello world,再對字元型指標進行初始化
	char ch1[] = "Hello world";
	char* text = ch1;
  • 方法3,修改程式碼,將char型別強轉為char*
	char* text = (char*)"Hello world";

事實上,在我看來,使用c++時可以利用STL標準庫#include<string>來滿足你的需求,相比於傳統c風格的#include<cstring>更靈活,不會出現莫名其妙的錯誤。強制型別轉換也可以使用static_cast<>(),這裡就不嘗試了。

以上就是【“const char *” 型別的值不能用於初始化 “char *” 型別的實體】報錯的解決方法了,希望對大家有所幫助~

如果覺得我的文章對你起到了些許的幫助,做下手指操點選下面的大拇指?感謝~
我是專注自動駕駛、Lidar感知、三維點雲處理、鐳射SLAM領域的阿川,歡迎各位志同道合的朋友在下面積極留言。欲將心事付瑤琴,希望能在交流中收穫知識、經驗和摯友?

相關文章