在initgraph()
函数中,从字符串常量到“char*”[-wwrite-strings]的转换被弃用,收到错误
// 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样式字符串文本,其类型为常量字符[1]
,可以隐式转换为常量字符*
。 自C++11以来,不允许隐式转换为char*
。
在C语言中,字符串文本的类型为char[]
,可以直接赋给一个(非常量)char*
。 C++03也允许使用它(但不推荐使用它,因为在C++中,文本是const
)。 C++11不再允许在没有强制转换的情况下进行这样的赋值。
制作initgraph
取const char*
是最好的。 否则,必须使用CONST_CAST
执行显式转换; 但是请注意,尝试修改字符串文本会导致未定义的行为。 如果initgraph
可以,那么不应该传递字符串文本。