Передача 'const char *' параметру типа 'char *' отбрасывает квалификаторы

0

Я предупреждаю:

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....

Как это предупреждение следует удалить, чтобы обе работали нормально?

  • 0
    Пожалуйста, попробуйте этот makedir((char*)write_filename); , Надеюсь, что это поможет вам.
  • 2
    Похоже, ошибка в определении makedir : нет никакой причины, по которой я понимаю, почему он не может принимать аргумент const char* , поэтому вы должны изменить его так, чтобы он
Теги:
gcc-warning

2 ответа

2
Лучший ответ

Как в файле 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().

Надеюсь, что это поможет вам.

  • 0
    Вам не нужно бросать на fopen . Кроме того, я бы порекомендовал не использовать const от char * . Если makedir изменяет строку, и вы передаете литеральную строку, которая помещается в постоянную память, вы получите неопределенное поведение. Это не переносимый код. Правильным способом было бы сделать неконстантную копию строки для функции, которая нуждается в этом.
0

Улучшение исходного ответа:

У вас есть функция, которая принимает параметр 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)

Надеюсь, что немного яснее.

  • 0
    моя проблема была точно такой же Спасибо чувак.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню