Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2012, 14:59   #1
Axrik
Форумчанин
 
Аватар для Axrik
 
Регистрация: 17.12.2011
Сообщений: 111
Вопрос Разбить программу на несколько файлов

Здраствуйте, подскажите как разбить части программы, распределить в другие файлы для удобства работы (например функцию a в файл A, а функцию b в файл B), куда их заносить (на диск С или не важно) и как их потом вызывать в main. Слышала что через include "name", но как?

Заранее спасибо.

Последний раз редактировалось Axrik; 30.01.2012 в 15:10.
Axrik вне форума Ответить с цитированием
Старый 02.03.2012, 16:15   #2
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Axtrik, что касается функций определённых в разных файлах, то нужны лишь прототипы (объявления) этих функций перед вызовом.

Файл main.c
Код:
#include <stdio.h>

void funcfrom_file_A(int val1, int val2, int val3);
void funcfrom_file_B(int val1, int val2, int val3);
void funcfrom_file_C(int val1, int val2, int val3);

int main ()
{
    int x, y, z;

    x = 2;
    y = 4;
    z = 8;

    funcfrom_file_A(x, y, z);
    funcfrom_file_B(x, y, z);
    funcfrom_file_C(x, y, z);

    return 0;
}
Файл file_A.c
Код:
#include <stdio.h>

void funcfrom_file_A (int m, int n, int p)
{
    printf("called funcfrom_file_A (), argument: %d, %d, %d\n\n", m, n, p);
}
Файл file_B.c
Код:
#include <stdio.h>

void funcfrom_file_B (int m, int n, int p)
{
    printf("called funcfrom_file_B (), argument: %d, %d, %d\n\n", m, n, p);
}
Файл file_C.c
Код:
#include <stdio.h>

void funcfrom_file_C (int m, int n, int p)
{
    printf("called funcfrom_file_C (), argument: %d, %d, %d\n\n", m, n, p);
}
Теперь, что касается глобальных переменных объявленных со словом extern:

Файл main.c
Код:
#include <stdio.h>

void funcfrom_file_A();
void funcfrom_file_B();
void funcfrom_file_C();
void func_init_variables ();

int x, y, z;

int main ()
{
    func_init_variables();
    funcfrom_file_A();
    funcfrom_file_B();
    funcfrom_file_C();

    return 0;
}
Файл init_variables.c
Код:
extern int x, y, z;

// функция для инициализации переменных
void func_init_variables ()
{
    x = 2;
    y = 4;
    z = 8;
}
Файл file_A.c
Код:
#include <stdio.h>

extern int x, y, z;

void funcfrom_file_A ()
{
    printf("called funcfrom_file_A (), argument: %d, %d, %d\n\n", x, y, z);
}
Файл file_B.c
Код:
#include <stdio.h>

extern int x, y, z;

void funcfrom_file_B ()
{
    printf("called funcfrom_file_B (), argument: %d, %d, %d\n\n", x, y, z);
}
Файл file_C.c
Код:
#include <stdio.h>

extern int x, y, z;

void funcfrom_file_C ()
{
    printf("called funcfrom_file_C (), argument: %d, %d, %d\n\n", x, y, z);
}
Примечание - Только в одном из файлов должно быть объявление без extern, во всех остальных с extern.

А теперь, что касается глобальных переменных объявленных в заголовочных файлах name.h.

Создадим два заголовочных файла. В один поместим глобальные переменные. А в другой прототипы (объявления) функций.

Файл global_variables.h
Код:
#ifndef GLOBAL_VARIABLES_H
#define GLOBAL_VARIABLES_H

int x, y, z;

#endif // GLOBAL_VARIABLES_H
Файл functions.h
Код:
#ifndef FUNCTIONS_H
#define FUNCTIONS_H

void funcfrom_file_A();
void funcfrom_file_B();
void funcfrom_file_C();
void func_init_variables ();

#endif // FUNCTIONS_H
Файл init_variables.c
Код:
#include "global_variables.h"

// функция для инициализации переменных
void func_init_variables ()
{
    x = 2;
    y = 4;
    z = 8;
}
Файл file_A.c
Код:
#include <stdio.h>
#include "global_variables.h"

void funcfrom_file_A ()
{
    printf("called funcfrom_file_A (), argument: %d, %d, %d\n\n", x, y, z);
}
Файл file_B.c
Код:
#include <stdio.h>
#include "global_variables.h"

void funcfrom_file_B ()
{
    printf("called funcfrom_file_B (), argument: %d, %d, %d\n\n", x, y, z);
}
Файл file_C.c
Код:
#include <stdio.h>
#include "global_variables.h"

void funcfrom_file_C ()
{
    printf("called funcfrom_file_C (), argument: %d, %d, %d\n\n", x, y, z);
}
P.S. Советую прочитать в книге Кернигана и Ритчи "Язык программирования С" полностью главу 4 "Функции и структура программы". Времени потратите немного, зато пользы будет...

Последний раз редактировалось 8Observer8; 02.03.2012 в 16:30.
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разбить столбец на несколько частей Ivan savelev Microsoft Office Excel 5 29.05.2013 05:59
отсортировать и разбить таблицу на несколько файлов dinaria Microsoft Office Excel 1 26.05.2011 10:13
необходимо разбить 1 лист с данными на несколько файлов по критерию из колонки Yalenka Microsoft Office Excel 7 29.03.2011 17:05
Как разбить SQL запрос на несколько строк? UNToxa БД в Delphi 4 17.02.2011 19:34
Разбить Bitmap на несколько частей apromix Мультимедиа в Delphi 4 24.02.2010 11:26