c++ - 不确定编译器在提示什么,以及如何找到解决方案

标签 c++ cygwin

当我尝试在 cygwin 下编译源代码时,出现了一大堆错误。我学习编程的最佳方法是努力学习,跟踪和错误。因此,即使我的 C++ 知识非常基础,我仍然是新手,所以当您解释时,请问您是否可以使用 baby talk,因为没有更好的词,哈哈。当我在源目录下输入“make”时,会出现这些错误。我的一个 friend ,我们是 MUD 上的 friend ,他当了 35 年的程序员,他对我说编译器不喜欢函数返回一个指针并改变所有的“return ''''”返回 strdup('''')

请告诉我你们的想法。谢谢

下面只是我在 Cygwin 中输入 make 后得到的语法的一小部分。希望有人有时间给我解释一下,谢谢。

$ make
make -s smaug
  -Compiling o/imc.o....
imc.c:106:1: error: deprecated conversion from string constant to ‘char*’ [-Werror=write-strings]
 };
 ^
imc.c:106:1: error: deprecated conversion from string constant to ‘char*’ [-Werror=write-strings]
imc.c:106:1: error: deprecated conversion from string constant to ‘char*’ [-Werror=write-strings]
imc.c:106:1: error: deprecated conversion from string constant to ‘char*’ [-Werror=write--strings]
imc.c:106:1: error: deprecated conversion from string constant to ‘char*’ [-Werror=write-strings]
imc.c:106:1: error: deprecated conversion from string constant to ‘char*’ [-Werror=write-strings]
imc.c: In function ‘char* color_itom(const char*, CHAR_DATA*)’:
imc.c:393:14: error: deprecated conversion from string constant to ‘char*’ [-Werror=write-strings]
   return "";
          ^
imc.c: In function ‘char* color_mtoi(const char*)’:
imc.c:414:14: error: deprecated conversion from string constant to ‘char*’ [-Werror=write-strings]
   return "";
          ^
imc.c: In function ‘char* imccapitalize(const char*)’:
imc.c:525:35: error: conversion to ‘char’ from ‘int’ may alter its value [-Werror=conversion]
   strcap[i] = tolower( str[i] );
                               ^
imc.c:527:35: error: conversion to ‘char’ from ‘int’ may alter its value [-Werror=conversion]
strcap[0] = toupper( strcap[0] );
                               ^
imc.c: In function ‘void imc_new_channel(const char*, const char*, const char*, const char*, const char*, bool, int, const char*)’:
imc.c:1089:13: error: conversion to ‘short int’ from ‘int’ may alter its value [-Werror=conversion]
c->level = perm;
         ^

       ^
cc1plus: all warnings being treated as errors
Makefile:101: recipe for target 'o/imc.o' failed
make[1]: *** [o/imc.o] Error 1
Makefile:46: recipe for target 'all' failed
make: *** [all] Error 2

好的,下面是显示第 106 行错误的代码:1 和 393:这是一个非常长的 .c 文件 我相信你们不想上传整个文件,但这是它的一部分,根据 Visual 2013,这里是起点行 106 和 393:我不确定 cygwin 何时说出错误发生的行号(如果不包括空格和注释),但根据 VS,这里是 106 和 393:

第 106 行

SITEINFO *this_imcmud;

第 393 行

if( IMCIS_SET( IMCFLAG( ch ), IMC_COLORFLAG ) )

最佳答案

你应该展示你的代码,但你的问题是:

  1. 您正在某处做类似的事情:

    char *x = "hello";
    

    应该是:

    const char *x = "hello";
    
  2. 同样,char* color_itom(const char*, CHAR_DATA*)应该返回 const char *如果您想从中返回字符串文字。

  3. strcap被定义为 char阵列,但你把 int tolower 返回的值和 toupper在某处。要么更改类型,要么进行显式转换。

  4. c->level = perm 相同.添加显式强制转换或更改 c->level 的类型匹配 perm 的类型.

关于c++ - 不确定编译器在提示什么,以及如何找到解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22770800/

相关文章:

c++ - 华硕1005pe的API可编程控制背光?

bash - 我怎样才能让 awk 为它解析的每个文件处理 BEGIN block ?

c++ - 在 vector 的开头和结尾添加

c++ - C++ 11中线程的延迟启动

c++ - 二元变量的排列及其值表

c++ - 使用预处理器定义函数调用的缺点是什么?

python - usr/bin/env : bad interpreter Permission Denied --> how to change the fstab

windows-7 - 对 _gzopen 等的 undefined reference

Android-ndk - 用于 cygwin 的 ndk-build 的简单构建脚本

gcc 失败,生成 : No such file or directory