Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
7 / 7 / 0
Регистрация: 26.11.2018
Сообщений: 262
1

Несколько файлов .c и .h и их компиляция

23.01.2020, 15:04. Показов 1722. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня есть 4 файлы.
main.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
#include <stdio.h>
 
#include "main.h"
#include "file_1.h"
 
int test_value_1=111;
int test_value_2=222;
 
 
int main()
{
    printf("Main file:\r\n");
    printf("Value from main file:%d, %d\r\n",test_value_1, test_value_2);
 
  printf("file_1:\r\n");
    printf("Value from file_1: %d, %d\r\n", val_from_file_1, val_from_file_2);
 
  //func_1_file_1();
    //printf("Value from file_1: %d\r\n", val_for_file_1);
 
 
 
    return 0;
}
main.h
C
1
2
3
4
#include <stdio.h>
 
int test_value_1;
int test_value_2;
file_1.c
C
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
 
#include "file_1.h"
 
int val_for_file_1=200;
int val_for_file_2=500;
 
void func_1_file_1(void)
{
    val_for_file_1++;
}
file_1.h
C
1
2
3
4
5
6
#include <stdio.h>
 
int val_from_file_1;
int val_from_file_2;
 
void func_1_file_1(void);
в build.sh я записываю команду:
gcc -Wall main.c -o myprog
программа компилируется, и появляется исполняемый файл 'myprog'$'\r'*
Запускаю его ./'myprog'$'\r'*
Результат:
Main file:
Value from main file:111, 222
file_1:
Value from file_1: 0, 0

Не понимаю почему выводятся переменниє val_from_file_1, val_from_file_2? почему они 0 а не 200 и 500??
Я не так компилирую или не так использую .h файл.?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.01.2020, 15:04
Ответы с готовыми решениями:

Раздельная компиляция (нюансы использования заголовочных файлов и файлов реализации)
Почему во многих учебниках функции-члены класса внутри класса только объявляют, но определяют вне...

Компиляция 2х файлов
main.cpp: #include&quot;template_matrix.h&quot; #include&lt;iostream&gt; int main() { Matrix&lt;int&gt; A(5, 5);...

Компиляция нескольких файлов
Написать скрипт, который компилирует заданные файлы и передает на исполнение. Файлы расширения .c,...

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

3
6579 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
23.01.2020, 15:21 2
Лучший ответ Сообщение было отмечено OlegD_STM32 как решение

Решение

Цитата Сообщение от OlegD_STM32 Посмотреть сообщение
Не понимаю почему выводятся переменниє val_from_file_1, val_from_file_2? почему они 0 а не 200 и 500??
Я не так компилирую или не так использую .h файл.?
Сделай их extern везде, кроме file_1.c
C++
1
2
extern int val_from_file_1;
extern int val_from_file_2;
Инициализацию оставь либо file_1.c, либо в main.c. В обоих - нельзя.
1
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
23.01.2020, 15:21 3
Для того чтобы была глобальная переменная, а не её дубляж, используйте extern
1
1 / 1 / 0
Регистрация: 01.06.2018
Сообщений: 11
23.01.2020, 15:25 4
могу ошибаться, но в случае двух с файлов и команда нужна примерно такая gcc -Wall main.c file_1.c -o myprog
1
23.01.2020, 15:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.01.2020, 15:25
Помогаю со студенческими работами здесь

Компиляция .com файлов (DOS)
Как в Borland C++ Builder 4.5 получить исполняемые файлы в формате .com?

Компиляция нескольких файлов
Допустим запустил такую команду: mcc -m f1.m f2.m f3.m где f1-f3 это файлы-функции. ...

Компиляция нескольких файлов
Здравствуйте, есть программа состоящая из 4 cpp, необходимо ее собрать, попытался собрать с помощью...

Компиляция python файлов
Как лучше компилировать python файлы в exe? И можно ли сделать так, что бы после компиляции был...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru