利用VS2019編寫以下C風格的代碼時,會出現E0144報錯:
char* text = "Hello world";
//初始化字符型指針出現報錯
image
網上查了一下,一部分人說是vs版本兼容性問題,新版本vs2017,2019都會遇到這個問題,新版本vs對此有更嚴格的要求。
目前總結到了3種解決方法,親測有效,可以根據你的使用習慣選擇一種方法。
-
方法1,不改代碼,修改項目屬性。項目>>屬性>>C/C++>>語言>>符合模式,將符合模式由是改為否(優點是不需要修改代碼,缺點是每寫新的項目就要修改一次設置)
image - 方法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領域的阿川,歡迎各位志同道合的朋友在下面積極留言。欲將心事付瑤琴,希望能在交流中收獲知識、經驗和摯友??