当我尝试在cygwin下编译源代码时,我会遇到一大堆错误。我学习编程的最好方法就是努力学习,不断尝试和犯错。所以即使我的C++知识非常基础,我仍然是一个真正的新手,所以当你解释的时候,我可以请你使用婴儿谈话,因为缺少一个更好的词lol。当我在源目录下输入'make‘时,它会给我这些错误。我的一个朋友,我们在泥巴上是朋友,他已经做了35年的程序员,他告诉我编译器不喜欢函数返回一个指针,并将所有的"return‘“改为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 ) )发布于 2014-04-01 03:48:22
你应该展示你的代码,但是你的问题是:
char *x = "hello";
它应该是:
const char *x = "hello";
strcap返回字符串,char* color_itom(const char*, CHAR_DATA*)应该返回const char *如果你想从char数组中返回字符串,但是你把tolower和toupper返回的int值放在那里的某个地方。要么更改类型,要么显式转换。
c->level = perm相同。添加显式强制转换或更改c->level的类型以匹配perm.的类型
发布于 2014-04-01 04:01:19
错误:
deprecated conversion from string constant to ‘char*’是由使用字符串字面值初始化char*引起的,例如
char* str = "something";
这应该是:
const char* str = "something";
https://stackoverflow.com/questions/22770800
复制相似问题