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

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

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

Студворк — интернет-сервис помощи студентам
У меня есть 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
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); A.Print(); return 0; } ...

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

3
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
23.01.2020, 15:21
Лучший ответ Сообщение было отмечено 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
Для того чтобы была глобальная переменная, а не её дубляж, используйте extern
1
1 / 1 / 0
Регистрация: 01.06.2018
Сообщений: 11
23.01.2020, 15:25
могу ошибаться, но в случае двух с файлов и команда нужна примерно такая gcc -Wall main.c file_1.c -o myprog
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.01.2020, 15:25
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru