提问者:小点点

从字符串常量到“char*”[-wwrite-strings]的转换已被弃用,正在获取错误


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; 
} 

共1个答案

匿名用户

“”是C样式字符串文本,其类型为常量字符[1],可以隐式转换为常量字符*。 自C++11以来,不允许隐式转换为char*

在C语言中,字符串文本的类型为char[],可以直接赋给一个(非常量)char*。 C++03也允许使用它(但不推荐使用它,因为在C++中,文本是const)。 C++11不再允许在没有强制转换的情况下进行这样的赋值。

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