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

Объявление функции в отдельном файле (Code::Blocks) - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
xlxndr
 Аватар для xlxndr
56 / 8 / 3
Регистрация: 14.06.2013
Сообщений: 115
24.06.2013, 00:00     Объявление функции в отдельном файле (Code::Blocks) #1
Разбираю объявление функций в отдельных файлах на примере задачи о проверке - является ли пятизначное число палиндромом, т.е. таким числом, которое читается слева направо и справо налево одинаково (12321, 23332 и т.д.)

В CodeBlocks создал три файла (см. рис.1 внизу):

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//главный файл проекта - main.cpp
#include <iostream>
#include "palendrom5.h"
using namespace std;
 
int main()
{
    int n;
    setlocale(LC_ALL,"Rus");
    cout << "Введите 5-значеное число" << endl;
    cin >> n;
 
    if(palendrom5(n))   //используем нашу функцию
                        //в зависимости от ее значения выводится сообщение
        cout << "Число " << n << " - палиндром" << endl;
    else
        cout << "Число не является палиндромом" << endl;
 
    cin.get();
    return 0;
}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//объявление функции в файле - palendrom5.cpp
#include <iostream>
#include "palendrom5.h"
 
//объявление функции нахождения истинности того, что число - палиндром
bool palendrom5(int numb)
{
    int a0,a1,a3,a4;    //переменные для хранения 0, 1, 3, 4 разрядов числа
    a0 = numb%10;       //находим цифру 0-го разряда
    numb=numb/10;
 
    a1 = numb%10;       //находим цифру 1-го разряда
    numb=numb/100;
 
    a3 = numb%10;       //находим цифру 3-го разряда
    numb=numb/10;
 
    a4 = numb%10;       //находим цифру 4-го разряда
 
    if((a0 == a4) && (a1 == a3))
        return true;
    else
        return false;
}
C
1
2
3
4
5
6
7
//файл заголовка - palendrom5.h
#ifndef PALENDROM5_H_INCLUDED
#define PALENDROM5_H_INCLUDED
 
bool palendrom5(int);
 
#endif // PALENDROM5_H_INCLUDED
Далее, установил в свойствах palendrom5.h флажки для Debug и Release как на рис.2.
При этом появляется сообщение, что проект еще не собран (рис 3), а после сборки появляется сообщения - рис 4.

ЧТО Я ДЕЛАЮ НЕ ТАК??? Нигде в интернете не могу найти ответ на этот вопрос... может что-то написано про visual studio, но как делается это в CodeBlocks?... Единственное отличие тут - это что создаются макроимена PALENDROM5_H_INCLUDED в заголовочном файле, а так - вроде все правильно...
Миниатюры
Объявление функции в отдельном файле (Code::Blocks)   Объявление функции в отдельном файле (Code::Blocks)   Объявление функции в отдельном файле (Code::Blocks)  

Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.06.2013, 00:00     Объявление функции в отдельном файле (Code::Blocks)
Посмотрите здесь:

C++ Ошибки в Code Blocks
C++ Ошибки в Code Blocks
C++ Получение адреса функции (Дизассемблер Code::Blocks)
Хедеры в Code Blocks C++
C++ Проблемка с Code::Blocks
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
24.06.2013, 01:33     Объявление функции в отдельном файле (Code::Blocks) #21
@xlxndr, да. Вон те две галочки надо снять.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xlxndr
 Аватар для xlxndr
56 / 8 / 3
Регистрация: 14.06.2013
Сообщений: 115
24.06.2013, 01:36  [ТС]     Объявление функции в отдельном файле (Code::Blocks) #22
теперь еще и отказывается удаляться тот файл gch
xlxndr
 Аватар для xlxndr
56 / 8 / 3
Регистрация: 14.06.2013
Сообщений: 115
24.06.2013, 01:39  [ТС]     Объявление функции в отдельном файле (Code::Blocks) #23
если убрать те галочки, то файл не прикрепляется к сборке, и пишется такая хрень:
Миниатюры
Объявление функции в отдельном файле (Code::Blocks)  
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
24.06.2013, 01:40     Объявление функции в отдельном файле (Code::Blocks) #24
как у меня на скриншоте сделайте, а на *.h.gch - забить
Миниатюры
Объявление функции в отдельном файле (Code::Blocks)  
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
24.06.2013, 01:43     Объявление функции в отдельном файле (Code::Blocks) #25
Цитата Сообщение от xlxndr Посмотреть сообщение
если убрать те галочки, то файл не прикрепляется к сборке, и пишется такая хрень:
Это уже лучше. Все файлы добавлены к проекту?
xlxndr
 Аватар для xlxndr
56 / 8 / 3
Регистрация: 14.06.2013
Сообщений: 115
24.06.2013, 01:49  [ТС]     Объявление функции в отдельном файле (Code::Blocks) #26
с той программой так и не получается... пишет

видимо там действительно черная магия виновата... а сейчас создал другую программу попроще, и все работает... в общем, принцип объявления функций в разных файлах отработан... вот этот другой пример...
Миниатюры
Объявление функции в отдельном файле (Code::Blocks)  
Olivеr
 Аватар для Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
24.06.2013, 01:54     Объявление функции в отдельном файле (Code::Blocks) #27
хорошо, что отработан

во вложениях рабочий проект из первого поста
Вложения
Тип файла: rar 0000.rar (1.3 Кб, 4 просмотров)
xlxndr
 Аватар для xlxndr
56 / 8 / 3
Регистрация: 14.06.2013
Сообщений: 115
24.06.2013, 02:01  [ТС]     Объявление функции в отдельном файле (Code::Blocks) #28
Функция просто прибавляет к введенному вами числу число 2...

Проект имеет 3 файла: главный, файл, в котором объявлена функция, и файл заголовка:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//файл main.cpp
#include <iostream>
#include "fff.h"                    //прикрепляем файл заголовка
 
using namespace std;
 
int main()
{
    int n;
    setlocale(LC_ALL,"Rus");
 
    cout << "Введите число: " << endl;
    cin >> n;
 
    cout << fff(n) << endl;         //используем нашу функцию fff
 
    cin.get();
    return 0;
}
C
1
2
3
4
5
6
7
8
//файл нашей функции fff.cpp
#include <iostream>
#include "fff.h"        //прикрпеляем файл заголовка
 
int fff(int n)
{
    return n+2;
}
C
1
2
3
4
5
6
7
//файл заголовка fff.h
#ifndef FFF_H_INCLUDED
#define FFF_H_INCLUDED
 
int fff(int);   //пишем прототип функции
 
#endif // FFF_H_INCLUDED

И здесь все работает.... Видимо от экспериментов с предыдущей задачей остались какие-то хвосты, которые чудо-CodeBlocks-y не давали собрать проект... (((

Добавлено через 2 минуты
Всем спасибо за участие

Добавлено через 3 минуты
Цитата Сообщение от Olivеr Посмотреть сообщение
хорошо, что отработан

во вложениях рабочий проект из первого поста
Ха... ну вот этот распакованный архив работает!...
Видимо действительно слишком тонка душа у CodeBlocks-a...
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
24.06.2013, 02:11     Объявление функции в отдельном файле (Code::Blocks) #29
Цитата Сообщение от MrGluck Посмотреть сообщение
Как разделить программу на модули в Dec C++
code::blocks не находит .h файл
мы игнорируем?
Выложу специально для вашего случая, все с точностью до мельчайших шагов
1. Выбираем File > New > Project (рис.1)
Объявление функции в отдельном файле (Code::Blocks)
2. В открывшемся диалоговом окне вводим название проекта (рис. 2), выбираем язык С++
Объявление функции в отдельном файле (Code::Blocks)
3. Выбираем компилятор GCC (стоит по дефолту), релиз и дебаг версии(также стоят по дефолту) (рис. 3). Можно просто нажать Next и пропустить этот этап
Объявление функции в отдельном файле (Code::Blocks)
4. Открываем созданный автоматически файл main.cpp, копируем туда необходимое содержимое (рис. 4)
Объявление функции в отдельном файле (Code::Blocks)
5. Выбираем File > New > Empty file (рис. 5) или же нажимаем комбинацию клавиш Ctrl + Shift + N
Объявление функции в отдельном файле (Code::Blocks)
6. При выборе между добавлением файла к проекту и обычным созданием (рис. 6) выбираем первый вариант (Да)
Объявление функции в отдельном файле (Code::Blocks)
7. В меню сохранения файла (рис. 7) указываем полностью имя и расширение (.cpp)
Объявление функции в отдельном файле (Code::Blocks)
8. В созданный файл запихиваем необходимый исходный код .cpp файла реализации функции (рис. 8)
Объявление функции в отдельном файле (Code::Blocks)
9. Повторяем процедуру из п.5, подтверждаем добавление нового файла к проекту (рис. 9)
Объявление функции в отдельном файле (Code::Blocks)
10. При сохранении важно выбрать расширение All files (*.*) и полностью набрать необходимое название + .h (расширение для заголовочных файлов) (рис. 10)
Объявление функции в отдельном файле (Code::Blocks)
11. Выбрать добавление в релиз и дебаг (рис. 11)
Объявление функции в отдельном файле (Code::Blocks)
12. В созданный пустой файл добавляем необходимые объявления функции, не забыв обрамить их инклюд гвардами (рис. 12)
Объявление функции в отдельном файле (Code::Blocks)
13. На панели сверху нажимаем на кнопку Rebuild (рис. 13) или набираем комбинацию Ctrl + F11. В открывшемся диалоговом окне нажимаем Yes.
Объявление функции в отдельном файле (Code::Blocks)
14. Выбираем на панели Run или Build and run, или же пользуемся комбинациями F9 либо Ctrl + F10 соответственно. Результат - работа программы (рис. 14)
Объявление функции в отдельном файле (Code::Blocks)
xlxndr
 Аватар для xlxndr
56 / 8 / 3
Регистрация: 14.06.2013
Сообщений: 115
24.06.2013, 02:18  [ТС]     Объявление функции в отдельном файле (Code::Blocks) #30
Нет, а я все правильно делал на самом то деле... это какие-то глюки были у CodeBlocks-a....
Вот, коллега Olivеr запустил точ в точ - и у него все работало тоже...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.06.2013, 02:20     Объявление функции в отдельном файле (Code::Blocks)
Еще ссылки по теме:

Описание функции шаблонного класса библиотеки в отдельном cpp-файле C++
Перестали работать функции с переменным числом параметров в Code::Blocks C++
Code::blocks и VS C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,399
24.06.2013, 02:20     Объявление функции в отдельном файле (Code::Blocks) #31
@xlxndr, у всех IDE так бывает. У VS правда чаще всего. Тотальный ребилд еще никому никогда не вредил.
Yandex
Объявления
24.06.2013, 02:20     Объявление функции в отдельном файле (Code::Blocks)
Ответ Создать тему
Опции темы

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