C++ 通过';常量字符*';至类型为'的参数;字符*';丢弃限定符
我得到警告: miniunz.c:342:25:将“const char*”传递给“char*”类型的参数 丢弃限定符 在的miniunz.c文件中。具体而言:C++ 通过';常量字符*';至类型为'的参数;字符*';丢弃限定符,c++,objective-c,c,gcc-warning,C++,Objective C,C,Gcc Warning,我得到警告: miniunz.c:342:25:将“const char*”传递给“char*”类型的参数 丢弃限定符 在的miniunz.c文件中。具体而言: const char* write_filename; fopen(write_filename,"wb"); //// This work fine........... makedir(write_filename); //// This line shows warning.... 如何删除此警告以使两者正常工作?如中的m
const char* write_filename;
fopen(write_filename,"wb"); //// This work fine...........
makedir(write_filename); //// This line shows warning....
如何删除此警告以使两者正常工作?如中的
miniunz.c
文件所示
函数定义如下:
int makedir (newdir)
char *newdir;
所以考虑到,
有两种方法可以做到这一点
char* write_filename;
fopen((char*)write_filename,"wb");
makedir(write_filename);
或
const char* write_filename;
fopen(write_filename,"wb");
makedir((char*)write_filename);
或者检查makedir()
函数
希望这将对您有所帮助。原始答案的改进: 您有一个函数,它将
NSString*
作为参数
首先,需要使用const char*str=[string UTF8String]将其转换为const char
指针代码>
接下来,您需要将常量字符
转换为字符
,调用
makedir((char*)写入文件名)代码>
在上面的一行中,您将使用write\u filename
的const char
值,并将其转换为char*
并将其传递到makedir
函数,该函数以char*
为参数:
makedir(char*argName)
希望这更清楚一点。请尝试此makedir((char*)write\u文件名)代码>。希望这能对您有所帮助。看起来像是makedir
定义中的一个bug:我看不出为什么它不能接受const char*
参数,所以您应该更改它,这样就不需要为fopen
强制转换了。另外,我真的建议不要将const
从char*
中强制转换。如果makedir
修改字符串,并传递放置在只读内存中的文本字符串,则将获得未定义的行为。它不是可移植代码。正确的方法是为需要字符串的函数创建字符串的非常量副本。