Я не понимаю, почему компилятор предупреждает меня о передаче несовместимого типа указателя в этом коде: (в этом контексте какая разница между void *
и void **
) (я не знаю, если это имеет значение, но я использую gnu99
C версия)Переход к void ** вместо void * заставляет компилятор жаловаться на типы, почему?
void someFunc(void ** foo) {
printf("%s\n", *foo);
}
int main() {
char * text = "some text";
someFunc(&text);
return 0;
}
и в этом не
void someFunc(void * foo) {
printf("%s\n", foo);
}
int main() {
char * text = "some text";
someFunc(text);
return 0;
}
заранее спасибо
ОК, понятно, поэтому, когда у меня есть своп-функция, например void swap ( ** a, ** b) вместо указателей вместо swap. Если я хочу сделать его общим (тип нечувствительный или что-то еще), что это правильный способ сделать это? –
Sasquash
@ Sasquash Извините, я не понимаю, что вы имеете в виду. Достаточно иметь 'T *', чтобы поменять два значения типа 'T'. –