Форум программистов, компьютерный форум CyberForum.ru

Подключение дополнительных модулей и работа с функциями из этих модулей - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.67
HeHyA4o
1 / 1 / 0
Регистрация: 17.10.2011
Сообщений: 46
16.03.2012, 19:26     Подключение дополнительных модулей и работа с функциями из этих модулей #1
Опять с вопросами после частично прочитанной книги "C++ Для Чайников". )
Сейчас пытаюсь понять как работает подключение дополнительных модулей и работа с функциями из этих модулей, нужно как то прописать прототип функции
C++
1
2
3
4
5
6
7
8
9
int test(char t[])
{
   int i;
     while (t[i]!=0)
     {
       cout << t[i];
     }
   return 0;
}
из дополнительного модуля в основной.
Подключил модуль (вроде) успешно, а вот прототип правильно составить не могу. (
Помогите пожалуйста. )

Добавлено через 10 минут
Пытаюсь так:
C++
1
int test(char t[]);
Но получаю:
Код
[Linker Error] Unresolved external 'test(char *)' referenced from C:\...<Тут мои папки>...\UNIT1.OBJ
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2012, 19:26     Подключение дополнительных модулей и работа с функциями из этих модулей
Посмотрите здесь:

использование файлов(модулей) C++
Подключение модулей или предварительные объявления C++
C++ Компановка модулей
подключение модулей C++
Работа с одномерными массивами. Вычислить сумму квадратов разностей корней из модулей действительных чисел C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
hepr
 Аватар для hepr
60 / 32 / 5
Регистрация: 21.10.2010
Сообщений: 538
16.03.2012, 19:40     Подключение дополнительных модулей и работа с функциями из этих модулей #2
Вроде как массивы передавать в функцию нельзя, вместо этого используйте указатель, и, если надо, количество элементов в массиве

Добавлено через 2 минуты
+ этот код у вас вряд ли будет работать:
C++
1
2
3
4
5
6
 int i;
     while (t[i]!=0)
     {
       cout << t[i];
     }
   return 0;
Переменная неинициализована, и не изменяет своего значения, вам нужно что-то типа:
C++
1
2
3
4
5
6
7
 int i = 0;
     while (t[i]!=0)
     {
       cout << t[i];
       i++;
     }
   return 0;
HeHyA4o
1 / 1 / 0
Регистрация: 17.10.2011
Сообщений: 46
16.03.2012, 20:04  [ТС]     Подключение дополнительных модулей и работа с функциями из этих модулей #3
Цитата Сообщение от hepr Посмотреть сообщение
Вроде как массивы передавать в функцию нельзя, вместо этого используйте указатель, и, если надо, количество элементов в массиве

Добавлено через 2 минуты
+ этот код у вас вряд ли будет работать:
C++
1
2
3
4
5
6
 int i;
     while (t[i]!=0)
     {
       cout << t[i];
     }
   return 0;
Переменная неинициализована, и не изменяет своего значения, вам нужно что-то типа:
C++
1
2
3
4
5
6
7
 int i = 0;
     while (t[i]!=0)
     {
       cout << t[i];
       i++;
     }
   return 0;

Спасибо! i++ проглядел )

Помогите с указателями...
Получилась такая функция:
C++
1
2
3
4
5
6
7
8
9
10
int test(&char t[])
{
   int i = 0;
     while (t[i]!=0)
     {
       cout << t[i];
       i++;
     }
   return 0;
}
Прототип такой:
C++
1
int test(char* t[]);
Скомпилировал без проблем! А вот использовать не получается (
Нужно передать указатель на 0-ой элемент массива, я пытаюсь это сделать так:
C++
1
2
3
  char line[128];
  cin.getline(line,128);
  test(&line);
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1
16.03.2012, 20:11     Подключение дополнительных модулей и работа с функциями из этих модулей #4
Вам надо:
C++
1
2
3
4
5
6
7
8
9
10
int test(char *t)
{
   int i = 0;
     while (t[i]!=0)
     {
       cout << t[i];
       i++;
     }
   return 0;
}
и
C++
1
int test(char* t);
и есть её прототип.

* Указатель на 0 элемент массива - его имя.
HeHyA4o
1 / 1 / 0
Регистрация: 17.10.2011
Сообщений: 46
16.03.2012, 20:48  [ТС]     Подключение дополнительных модулей и работа с функциями из этих модулей #5
Цитата Сообщение от Whiteha Посмотреть сообщение
Вам надо:
C++
1
2
3
4
5
6
7
8
9
10
int test(char *t)
{
   int i = 0;
     while (t[i]!=0)
     {
       cout << t[i];
       i++;
     }
   return 0;
}
и
C++
1
int test(char* t);
и есть её прототип.

* Указатель на 0 элемент массива - его имя.
Использовать её так и не получилось:
C++
1
test(&line);
Что неверно?
Whiteha
Программист
33 / 33 / 4
Регистрация: 08.07.2011
Сообщений: 190
Записей в блоге: 1
16.03.2012, 20:55     Подключение дополнительных модулей и работа с функциями из этих модулей #6
Вероятно из-за test(&line);
Надо:
C++
1
test(line);
Yandex
Объявления
16.03.2012, 20:55     Подключение дополнительных модулей и работа с функциями из этих модулей
Ответ Создать тему
Опции темы

Текущее время: 01:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru