这段代码出了什么问题?
#include <stdio.h>
#include <dos.h>
#include <graphics.h>
int main()
{
int gd = DETECT, gm;
initgraph(&gd, &gm, ""); /* this is where the error it says */
}
它说错误:
warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
我正在使用代码块,只是尝试运行我朋友的代码来进行演讲。
答案 0 :(得分:3)
从C ++ 98开始,string literals到char*
的转换已被弃用,并已在C ++ 11中完全删除。
这是因为C ++ 98及更高版本中的字符串文字是const char[]
。虽然您的代码没有显示所需的全部内容,但这就是警告的原因。
如果您使用的是C,那么这很好,因为C中的字符串文字只是char[]
。
答案 1 :(得分:1)
这是由行
引起的initgraph(&gd, &gm, "");
作为initgraph
的原型
void initgraph(int *graphdriver, int *graphmode, char *pathtodriver);
并且在符合标准的C ++中,字符串文字不能隐式转换为非const char*
。
如果您使用可以转换为char*
的数组替换文字,警告就会消失:
char driver[] = "";
initgraph(&gd, &gm, driver);