Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
visagaboy
0 / 0 / 1
Регистрация: 10.12.2014
Сообщений: 12
1

Разделение С кода на несколько файлов

22.09.2015, 13:21. Просмотров 423. Ответов 3
Метки нет (Все метки)

Нужно разделить исходный код на 5 частей.
Кликните здесь для просмотра всего текста
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#define MAXVAL 100
 
int sp=0;
 
char val[MAXVAL];
 
 
void push(char c)
{
    if (sp < MAXVAL)
        val[sp++] = c;
    else
        printf("error: stack full, can’t push %g\n", c);
}
 
 
char pop(void)
{
    if (sp > 0)
        return val[--sp];
    else
        return 0;
}
 
 
 
int reverse(void)
{
    int counter=0;
    char c;
 
    // first push all the values on the stack
    c = getchar();
    while (c!='\n')
    {
        counter++;
        push(c);
        c = getchar();
    }
 
    // then take them off the stack in opposite order
    while ((c=pop()) != 0)
    {
          putchar(c);
    }
     
    return counter;
}
 
void main(void)
{
    printf("\n%d\n",reverse());
    getchar();
}


Пока вот что получилось

stack.h
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
#define MAXVAL 100
 
int sp=0;
 
char val[MAXVAL];
 
void push(char c);
void pop();

stack.c
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stack.h"
 
void push(char c)
{
    if (sp < MAXVAL)
        val[sp++] = c;
    else
        printf("error: stack full, can’t push %g\n", c);
}
 
 
char pop(void)
{
    if (sp > 0)
        return val[--sp];
    else
        return 0;
}

reverse.h
Кликните здесь для просмотра всего текста
C
1
2
#include "stack.h"
int reverse();

reverse.c
Кликните здесь для просмотра всего текста
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
#include "stack.h"
#include "reverse.h"
 
int reverse(void)
{
    int counter=0;
    char c;
 
    // first push all the values on the stack
    c = getchar();
    while (c!='\n')
    {
        counter++;
        push(c);
        c = getchar();
    }
 
    // then take them off the stack in opposite order
    while ((c=pop()) != 0)
    {
          putchar(c);
    }
     
    return counter;
}

program1.c
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
#include <stdio.h>
#include "stack.h"
#include "revesre.h"
 
void main(void)
{
    printf("\n%d\n",reverse());
    getchar();
}


Начал компилировать через командную строку,stack.obj получился, а вот с reverse проблемы. Выдает вот такую ошибку
0
Миниатюры
Разделение С кода на несколько файлов  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.09.2015, 13:21
Ответы с готовыми решениями:

В чем смысл разделения кода на несколько файлов в си?
В учебнике по си было сказано что это нужно для того чтобы было легче...

Разделение кода по файлам
Собственно, вопрос в следующем. В программе нужен глобальный (видимый из...

Разделение кода программы на файлы
Добрый вечер, Заранее извиняюсь, если это тема уже где-то подымалась на...

Указатель типа void - пояснить несколько строк кода
Ну вот вроде разобрался с указателями и начал разбираться с указателями типа...

Разбиение программы на несколько файлов
main.c: #include &quot;vector_int.h&quot; #include &lt;stdio.h&gt; int main() {...

3
smartpointer
69 / 63 / 39
Регистрация: 17.02.2014
Сообщений: 265
22.09.2015, 14:47 2
C
1
void pop();
объявлен в хеадере, а в .c
C
1
char pop(void)
В stack.h просто объявите
C
1
int sp;
в stack.c
C
1
int sp = 0;
Из main #include <stdio.h> переместите в stack.h.
0
Jewbacabra
Эксперт PHP
3431 / 2856 / 1285
Регистрация: 24.04.2014
Сообщений: 8,664
22.09.2015, 18:29 3
visagaboy,
include guard
extern
0
QewerC
6 / 6 / 9
Регистрация: 15.07.2015
Сообщений: 56
23.09.2015, 18:52 4
#include "stack.h"
int reverse(void);//<==
для reverse.h попробуйте

void pop(void);//для stack.h
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2015, 18:52

Разбить проект на несколько файлов
Я разбил на header.h только что еще можно разбить? Header.h int ** matr;...

Разбиение любых файлов на несколько частей
Есть ли, какая-нибудь функция с которой можно разбивать любые файлы по битам? ...

Как сразу закрыть несколько файлов
кто-нибудь знает еще варианты кроме fclose()?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru