Я предупреждаю:
miniunz.c: 342: 25: Передача 'const char *' в параметр типа 'char *' отбрасывает квалификаторы
в файле miniunz.c библиотеки Zip Archive. В частности:
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()
.
Надеюсь, что это поможет вам.
fopen
. Кроме того, я бы порекомендовал не использовать const
от char *
. Если makedir
изменяет строку, и вы передаете литеральную строку, которая помещается в постоянную память, вы получите неопределенное поведение. Это не переносимый код. Правильным способом было бы сделать неконстантную копию строки для функции, которая нуждается в этом.
Улучшение исходного ответа:
У вас есть функция, которая принимает параметр NSString *
в качестве параметра.
Прежде всего, необходимо, чтобы преобразовать его в const char
указатель с const char *str = [string UTF8String];
Затем вам нужно указать const char
как char
, вызывая
makedir((char*)write_filename);
В приведенной выше строке вы принимаете значение const char
для write_filename
и write_filename
его как char *
и передаете его в функцию makedir
которая принимает в качестве аргумента char *
:
makedir(char * argName)
Надеюсь, что немного яснее.
makedir((char*)write_filename);
, Надеюсь, что это поможет вам.makedir
: нет никакой причины, по которой я понимаю, почему он не может принимать аргументconst char*
, поэтому вы должны изменить его так, чтобы он