c++ - Codeblocks 16.01 中警告被视为错误

标签 c++ c gcc codeblocks bgi

我正在尝试在代码块中构建一个cpp程序,其中包含graphics.h文件。

但是我得到了

warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]

  initgraph(&gd, &gm, "");

警告被视为错误:我已修改所有链接器设置以在代码块中包含graphics.h。

initgraph(&gd, &gm, "");

代码块显示:

=== Build failed: 1 error(s), 1 warning(s) (0 minute(s), 0 second(s)) ===

最佳答案

问题是现在的 C++ const 限定所有字符串文字,这与 C 和标准前的 C++ 不同。 TC++ 和 Borland BGI 是来自标准之前的时代,所以它不能用标准 C++ 干净地编译。

最佳解决方法:

char empty[] = "";
initgraph(&gd, &gm, empty);

快速而肮脏的解决方法:

initgraph(&gd, &gm, (char*)"");

您可能还想问自己为什么要使用为 MS DOS 编写的已有 30 年历史的过时库。

关于c++ - Codeblocks 16.01 中警告被视为错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57370952/

相关文章:

Clang 集成汇编器和 "invalid operand for instruction"

c - 将 vector 传递给函数以计算 C 中的长度

c - 简单的 C 程序无法正确计算

c++ - 类没有构造函数前向声明

c++ - 在 Release模式下 cout 不打印任何内容

c++ - CMake如何查找软件包

gcc - 传递 ‘const 此参数会丢弃限定符 [-fpermissive]

c++ - C++ 中的单词语言检测

c - 如何使用 GCC 在绝对地址处声明变量?

c++ - 如何在 X86 PC 上为 arm 编译 gcc 编译器