从字符串常量到 'char*' 的转换已取消
depecrated conversion from string constant to 'char*'
这段代码有什么问题?
#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]
我正在使用代码块,只是尝试运行我从朋友那里获得的用于讲座的代码。
从 C++98 开始,不推荐使用字符串文本到 char*
的转换,并在 C++11 中完全删除。
这是因为字符串文本在 C++98 及更高版本中const char[]
。虽然您的代码没有显示所需的所有内容,但这就是发出警告的原因。
如果您使用的是 C,这完全没问题,因为 C 中的字符串文字只是char[]
.
这是由以下行引起的
initgraph(&gd, &gm, "");
因为initgraph
的原型是
void initgraph(int *graphdriver, int *graphmode, char *pathtodriver);
并且字符串文本不能在符合标准的C++中隐式转换为非常量char*
。
如果将文本替换为可转换为 char*
的数组,则警告应该消失:
char driver[] = "";
initgraph(&gd, &gm, driver);
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- 如何阻止反斜杠在从 QString 到 char 数组的转换中取消?
- 指针取消引用:无法将“节点**”转换为“节点*”
- 通过make_unique取消引用下转换的派生对象是否安全
- 从字符串常量到 'char*' 的转换已取消
- 如果 Derived 没有向 Base 添加新成员(并且是 POD),则可以安全地完成哪种指针强制转换和取消引用
- 取消引用向上转换的成员函数指针
- 将字符指针强制转换为双精度数组/取消引用
- 将短*/双*转换为整数*,然后返回并取消引用
- 将取消引用字符迭代器转换为 int C++
- 指向类型强制转换和取消引用指针的指针
- 取消引用被强制转换为双指针的指针
- 从模板基类中取消隐藏模板化的强制转换运算符
- 取消引用类型punned指针将打破严格的混叠规则:将字节数组转换为数字
- 将char[]强制转换为usingned int给出:取消引用类型的punned指针将打破严格的别名规则
- 如何用另一个转换来逆转(或取消)OpenGL SRT转换
- 将无符号字符*转换为字符*是否安全,并将取消引用的指针视为真正指向字符