LINUX.ORG.RU

Проблема с функциями [C]

 


0

0

Пишу тренировочную программку :

#include <stdio.h>

void getday (void); void getdate (void);

int main () { int index; int nday,nmonth,nyear;

printf («Введите действие:\n»); printf («1-узнать номер дня в году \n»); printf («2-узнать число и месяц\n»); printf («0-выход»);

index = getchar ();

if (getchar() != 0) { printf («ERROR!»); }

switch (index) {

case '1' : getday(); break;

case '2' : getdate(); break;

case '0' : return 0;

default : printf(«Ошибка»); return 1; } }

gcc выдает ошибку при компиляции только на 1 из функций :

gcc ./days.c /tmp/ccUNUelM.o: In function `main': days.c:(.text+0x79): undefined reference to `getday' collect2: ld returned 1 exit status

Собственно вопросы : Почему ошибка только в 1 функции, если getdate идентична getday, тем более что объявлены только их прототипы.

Что значит эта ошибка?

★★

Потому, что это сообщение линкера. Он доходит до первого, неизвестно откуда взявшегося символа, и останавливается.

tzukko
()

функция getdate есть в libc. Правда у нее другой прототип (задаваемый в <time.h>) но так как у тебя нет #include <time.h> то разница прототипов не ловится компилятором. А линкер не знает о прототипах, для него все getdate одинаковы (ошибку на getday ты получаешь от линкера).

dilmah ★★★★★
()

> Собственно вопросы : Почему ошибка только в 1 функции, если getdate идентична getday, тем более что объявлены только их прототипы.

Это первая встретившаяся ошибка при линковке. поправишь её --- вфлезет следующая

> Что значит эта ошибка?


Ты и сам прекрасно понимаешь. Реализации функции нет, потому и ругается.

gaa ★★
()
Ответ на: комментарий от gaa

> Это первая встретившаяся ошибка при линковке. поправишь её --- вфлезет следующая

Не вылезет. getdate есть в libc.

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

>> Это первая встретившаяся ошибка при линковке. поправишь её --- вфлезет следующая
> Не вылезет. getdate есть в libc.


И правда, скомпилилось. Подленько.

gaa ★★
()
Ответ на: комментарий от gaa

>И правда, скомпилилось. Подленько.
Вполне нормально, я считаю.

tzukko
()
Ответ на: комментарий от alex_custov

Почему же?

Имена же не декарируются, это С

namezys ★★★★
()
Ответ на: комментарий от dilmah

спасибо за помощь написал тело getday и все скомпилилось

Dikar ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.