将'const char *'传递给'char *'类型的参数会丢弃限定符

时间:2014-01-29 05:33:11

标签: c++ objective-c c gcc-warning

我收到警告:

  

miniunz.c:342:25:将'const char *'传递给'char *'类型的参数   丢弃限定符

Zip Archive library的miniunz.c文件中。具体做法是:

const char* write_filename;
fopen(write_filename,"wb"); //// This work fine...........
makedir(write_filename);    //// This line shows warning....

如何删除此警告以使两者都正常工作?

2 个答案:

答案 0 :(得分:3)

Zip Code中的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()功能。

希望这会对你有所帮助。

答案 1 :(得分:1)

对原始答案的改进:

你有一个以NSString *为参数的函数。

首先,您需要使用const char

将其转换为const char *str = [string UTF8String];指针

接下来,您需要将const char转换为char,并调用

makedir((char*)write_filename);

在上面的一行中,您取const char write_filename的值char *并将其转换为makedir并将其传递到char *函数中一个makedir(char * argName)作为其论点:

{{1}}

希望有点清楚。