当我尝试在 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 ) )
最佳答案
你应该展示你的代码,但你的问题是:
您正在某处做类似的事情:
char *x = "hello";
应该是:
const char *x = "hello";
同样,
char* color_itom(const char*, CHAR_DATA*)
应该返回const char *
如果您想从中返回字符串文字。strcap
被定义为char
阵列,但你把int
tolower
返回的值和toupper
在某处。要么更改类型,要么进行显式转换。c->level = perm
相同.添加显式强制转换或更改c->level
的类型匹配perm
的类型.
关于c++ - 不确定编译器在提示什么,以及如何找到解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22770800/