[英]Depreciated conversion from string constant to 'char*'
我希望有一個人可以幫助我。 我正在將C語言程序轉換為C ++,以便輕松使用字符串,但是當我進行編譯時,出現此錯誤:
inventory.cpp:225: warning: depreciated conversion from string constant to 'char*'
這是有問題的代碼所在的位置:
#define FNAME "database.dat"
// test data struct
struct t_Record
{
int number;
char word[100];
//String word[];
} Record;
int main (void)
{
int Rec = 0; // record number
FILE *File;
srand(time(NULL));
File = FileOpen(FNAME);
if (!File)
{
printf("Error hommie!\n\n");
exit(-1);
}
...etc.
這是編譯器告訴我發生錯誤的地方:
File = FileOpen(FNAME);
我只是看不出有什么問題...
編譯器告訴我的地方甚至沒有與之關聯的字符串或char?
現在,我了解到以前已經看到過此錯誤,但是我的問題特定於我的代碼。
問題是您正在嘗試將字符串文字 (類型為const char[]
)轉換為char*
。
編譯器告訴我的地方甚至沒有與之關聯的字符串或char?
是的,它位於文件的頂部:
#define FNAME "database.dat"
C ++標准n3337§2.14.5 / 1
字符串文字
字符串文字是由雙引號括起來的字符序列(如2.14.3中所定義),可以選擇在其前加上R,u8,u8R,u,uR,U,UR,L或LR,如“ ...” ,R“(...)”,u8“ ...”,u8R“(...)”,u“ ...”,uR“ * ̃(...)* ̃”,U“ .. 。“,UR” zzz(...)zzz“,L” ...“或LR”(...)“。
您可以通過強制轉換為char*
來避免該警告:
File = FileOpen( (char*)FNAME);
甚至更好地修改FileOpen
以接受const char*
。 因為您不打算修改字符串,這將更安全且恰到好處。
正如@lizusek所說,可以通過將類型強制轉換為char*
來避免警告,但更好的方法是重寫代碼以避免類型強制轉換。 盡管它可以解決很多麻煩,但如果鍵入錯誤的內容,可能會非常危險。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.