Я не смог воспроизвести первое предупреждение;Вы уверены, что код, который вы вставили сюда, является кодом, который выдает предупреждение?
Ошибка unknown type name 'tele_typ'
легко исправить: вы объявили тип struct tele_typ
, но не имеетеstruct
перед строкой:
tele_typ *first; /* create a pointer to a structure */
Если вы измените это на:
struct tele_typ *first; /* create a pointer to a structure */
Он будет скомпилирован без ошибок.(А также без предупреждений в моем gcc-4.5.real (Ubuntu / Linaro 4.5.2-8ubuntu4) 4.5.2.)
Если вы хотите скомпилировать тело функции точно как есть, то вы бытакже хочу добавить:
typedef struct tele_typ tele_typ;
сразу после определения struct tele_typ
:
struct tele_typ {
char name[30];
char phone_no[15];
struct tele_typ *nextaddr;
};
typedef struct tele_typ tele_typ;
Но меня немного беспокоит книга C, которая не дает main()
функция типа возврата или набранные параметры.int main(int argc, char* argv[])
или int main(int argc, char** argv)
обычно, и любая книга, которая отклоняется от этих двух вариантов, кажется мне немного странной. Язык программирования C - хорошая книга;это трудно улучшить для его ясности и правильности.Рассмотрите возможность перехода на оригинал.