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

По разбиению программы на файлы - C++

Восстановить пароль Регистрация
 
Diabolisk
30 / 2 / 0
Регистрация: 26.04.2012
Сообщений: 51
02.06.2012, 15:48     По разбиению программы на файлы #1
Хочу написать программу, так что бы отдельные функции был и записаны в различные файлы, как это реализовать? и что делать с глобальными переменными(собираюсь сделать динамический линейный список таким образом)?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dimcoder
Полярный
 Аватар для dimcoder
449 / 422 / 66
Регистрация: 11.09.2011
Сообщений: 1,108
02.06.2012, 15:57     По разбиению программы на файлы #2
Цитата Сообщение от Diabolisk Посмотреть сообщение
Хочу написать программу, так что бы отдельные функции был и записаны в различные файлы, как это реализовать?
Для этого есть хэдеры, то есть файлы с расширением .h Там объявляете свои функции, и подключаете этот файл. Пример:

C++
1
2
3
4
5
6
7
#ifndef MYFUNC_H   //Что бы не возникло ошибки при повторном подключении этого файла
#define MYFUNC_H
    int writeNumber(int x)
    {
        std::cout << x << std::endl;
    }
#endif
Пример использования:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <cstdio>
#include <iostream>
#include <myfunc.h>
 
 
using namespace std;
 
int main(int intArgc, char* pszArgs[])
{
    int x;
    cin >> x;
    writeNumber(x);
    system("PAUSE > NULL");   
    return EXIT_SUCCESS;
}
Цитата Сообщение от Diabolisk Посмотреть сообщение
и что делать с глобальными переменными
Если прямо надо подключить из хэдера, то там и объявляете.
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
02.06.2012, 16:27     По разбиению программы на файлы #3
Цитата Сообщение от dimcoder Посмотреть сообщение
C++
1
2
3
4
5
6
7
#ifndef MYFUNC_H * //Что бы не возникло ошибки при повторном подключении этого файла
#define MYFUNC_H
    int writeNumber(int x)
    {
        std::cout << x << std::endl;
    }
#endif
Разве не будет ошибки при попытке подключения такого заголовка в несколько исходников? Мне всегда казалось, что следует разделять объявление и определение:
C++
1
2
3
4
5
6
7
//myfunc.h:
#ifndef MYFUNC_H
#define MYFUNC_H
 
    void WriteNumber(int);
 
#endif
C++
1
2
3
4
5
6
7
8
9
//myfunc.cpp:
#include <iostream>
#include "myfunc.h"
 
using namespace std;
 
void WriteNumber(int x) {
    cout << x << endl;
}
Diabolisk
30 / 2 / 0
Регистрация: 26.04.2012
Сообщений: 51
02.06.2012, 17:59  [ТС]     По разбиению программы на файлы #4
Вот пример двух простых хедеров, почему то я не могу подключить к одному wwod.h
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
25
26
27
#ifndef vvod_h
#define vvod_h
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct  i{
    int r;
    int t;
    struct i *ptr;
    }*q;
int vvod(void){
    struct i *w,*e;
    int z;
    mymet:{
    printf("sozadt zapis'(1/0)???");
    scanf("%d",&z);
    };
    while (z==1){
        w=(struct i*)malloc(sizeof(struct i));
        scanf("r=%d/t t=%d\n",&w->r,&w->t);
        w->ptr=q;
        q=w;
        goto mymet;};
        free(w);
    return 0;
    }
#endif
и вот второй файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef vivod_h
#define vivod_h
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<iostream.h>
#include(WWOD.H>
int vivod(void){
    struct i *z;
    z=q;
    while(z){
         printf("r=%d\tt=%d\n",z->r,z-q);
         z=z->ptr;
         }
    return 0};
#endif
что не так делаю?

Добавлено через 49 минут
в место include<vvod.h> надо было написать include"vvod.h" и всё)


теперь проблема не знаю как всё это связанно вызвать 3тий файл который по задумке должен был вызывать всё это вот
C++
1
2
3
4
5
6
7
8
#include"vvod.h"
#include"wiwod.h"
#include<conio.h>
int main(void){
    clrscr();
    vvod;
    vivod;
        return 0;}
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
04.06.2012, 12:11     По разбиению программы на файлы #5
Цитата Сообщение от Diabolisk Посмотреть сообщение
C++
1
2
vvod;
vivod;
Скобок нет.
Yandex
Объявления
04.06.2012, 12:11     По разбиению программы на файлы
Ответ Создать тему
Опции темы

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