パラメータの受け渡し中にこのエラーを理解できません。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef char my_char;
void myfunc(const my_char** data)
{
printf ("%s\n", *data);
printf ("%s\n", *(data + 1));
}
int main(){
char **mydata;
mydata = malloc(sizeof(char*)*2);
mydata[0] = malloc(sizeof(char)*50);
mydata[1] = malloc(sizeof(char)*50);
memset(mydata[0],'\0',50);
memset(mydata[1],'\0',50);
strcpy (mydata[0], "Hello");
strcpy (mydata[1], "world");
myfunc((my_char**)mydata);
free (mydata[0]);
free (mydata[1]);
free (mydata);
return 0;
}
正常に動作します。ただし、引数を明示的に型キャストすると警告が表示されます。これはなぜですか?表示される警告は次のとおりです。
warning: passing argument 1 of ‘myfunc’ from incompatible pointer type
私の知る限り、型キャストは、ポインターが保持しているデータの型をコンパイラーが理解するのに役立つはずです。しかし、ここではまったく役に立ちません。