将错误作为从字符串常量到"char*"的已弃用转换 [-Wwrite-strings]

getting error as deprecated conversion from string constant to 'char*' [-Wwrite-strings]

本文关键字:转换 -Wwrite-strings char 错误 字符串 常量      更新时间:2023-10-16

我在函数中收到错误,因为从字符串常量到"char*"[-Wwrite-strings] 的已弃用转换initgraph()

// C Implementation for drawing circle 
#include <graphics.h> 
//driver code 
int main() 
{ 
int gd = DETECT, gm; 
initgraph(&gd, &gm, ""); //here I'm getting an error of string
circle(250, 200, 50); 
getch(); 
closegraph(); 
return 0; 
} 

""是一个 C 样式的字符串文本,其类型为const char[1],可以隐式转换为const char*。自 C++11 以来,不允许隐式转换为char*

在 C 语言中,字符串文字的类型是char[]的,可以直接分配给(非常量(char*。C++03 也允许它(但弃用了它,因为文字在 C++ 中const(。C++11 不再允许在没有演员的情况下进行此类任务。

initgraph服用const char*是最好的。否则,您必须使用const_cast执行显式转换;但请注意,尝试修改字符串文本会导致未定义的行为。如果initgraph可以,则不应传递字符串文本。