У меня есть проблема с комплектом следующим образом. Заголовочный файл abc.h
включен abc.c
.Почему это противоречивое объявление типа?
В заголовочном файле, у меня есть этот
extern char **foo;
в исходном файле, у меня есть этот
char *foo[] = { ".mp3", ".mp4" };
Но я получаю ошибку компиляции из GCC:
abc.c:23:7: error: conflicting types for ‘foo’
In file included from abc.c:18:0:
abc.h:64:15: note: previous declaration of ‘foo’ was here
Почему я получаю эту ошибку?
@KingWeeWee Вещи работают по-разному в объявлении функции :-) – cnicutar
что я имел в виду, char * p такой же, как char [] p. Хорошо спасибо – KingWeeWee
@KingWeeWee: вы ошибались, они не такие же. Когда компилятор видит внешний символ с типом «массив X неуказанного размера», то, что он фактически собирается связать, является адресом массива, который начинается с того же места, что и его первый элемент. Тем не менее этот тип отличается от типа указателя на этот первый элемент. –