Решено: Не могу передать аргумент (изучаю C)

Модератор: Модераторы разделов

Ответить
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Решено: Не могу передать аргумент (изучаю C)

Сообщение azsx »

Есть код

Код: Выделить всё

/* pound.с -- определяет функцию с аргументом */
  #include <stdio.h>
  void pound(int n); // объявление прототипа функции согласно стандарту ANSI
  int main(void)
  {
  int times = 5;
  char ch = '!'; // ASCII-код равен 33
  float f = 6.0f;
  pound(times); // аргумент типа int
  pound (ch) ; // эквивалентно pound((int)ch);
  pound(f); // эквивалентно pound((int)f);
  return 0;
  }

При компиляции выводит ошибки

Код: Выделить всё

gcc 1.c -o 1
  /tmp/cceF67ka.o: In function `main':
  1.c:(.text+0x22): undefined reference to `pound'
  1.c:(.text+0x2d): undefined reference to `pound'
  1.c:(.text+0x3d): undefined reference to `pound'
  collect2: error: ld returned 1 exit status

Все поиски в гугле выводят на С++, а у меня pure C. Не могу понять, что не так с трокой void pound(int n); и как это исправить.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Решено: Не могу передать аргумент (изучаю C)

Сообщение Bizdelnick »

azsx писал(а):
06.05.2017 18:19
Не могу понять, что не так с трокой void pound(int n)

Не так с ней то, что функция pound() не определена. Компиляция проходит успешно — для неё достаточно того, что есть прототип; а вот на стадии линковки получаете ошибку.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
ieleja
Сообщения: 307
ОС: Debian 9, macOS, Windows
Контактная информация:

Re: Решено: Не могу передать аргумент (изучаю C)

Сообщение ieleja »

и где сама функция?
ad infinitum
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: Не могу передать аргумент (изучаю C)

Сообщение azsx »

Я только учусь по Стивену Пратту 6 - е издание. Просто не знаю как эти функции определяют, сам понять не могу. Дайте, пожалуйста ссылку, где об эом можно почитать.
Спасибо сказали:
azsx
Сообщения: 3684
ОС: calculate linux, debian, ubuntu

Re: Решено: Не могу передать аргумент (изучаю C)

Сообщение azsx »

понял, забыл

Код: Выделить всё

void pound(int n) // заголовок функции в стиле ANSI, который указывает,
{ // что функция принимает один аргумент int
while (n-- > 0)
printf("#") ;
printf("\n");
}
Спасибо сказали:
Ответить