Работа компилятора с несколькими файлами - C (СИ)
Формулировка задачи:
Я нарочно сделал неправильно(хочу понять логику работы компилятора)
Почему ошибка _f уже определен в main.obj
main.c
tmp.c
#include <stdio.h> #include <stdlib.h> #include "tmp.c" int a; int main(){ system("pause"); }
#include <stdio.h> void f(void){ extern int a; printf("a=%d",a); }
Решение задачи: «Работа компилятора с несколькими файлами»
textual
Листинг программы
//main.c // содержимое stdio.h // содержимое stdlib.h // содержимое stdio.h void f(void){ extern int a; printf("a=%d",a); } int a; int main(){ system("pause"); } // tmp.c // stdio.h void f(void){ extern int a; printf("a=%d",a); }
Объяснение кода листинга программы
main.c
иtmp.c
- названия файлов, где написан код.extern int a;
- объявление переменнойa
как внешней, доступной для всех файлов, которые включают данный файл.printf(
a=%d,a);
- выводит значение переменнойa
на экран.int a;
- определение переменнойa
типаint
.system(
pause);
- функция, которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет клавишу.void f(void){
- функция с именемf
, которая не принимает аргументов и возвращаетvoid
.extern int a;
- в функцииf
объявляется переменнаяa
как внешняя.printf(
a=%d,a);
- в функцииf
выводится значение переменнойa
на экран.int a;
- определение переменнойa
типаint
в функцииf
.- В обоих файлах присутствуют строки
#include <stdio.h>
, которые включают в код содержимое файлаstdio.h
. - В обоих файлах присутствуют строки
#include <stdlib.h>
, которые включают в код содержимое файлаstdlib.h
. - В обоих файлах присутствует функция
f
, которая выводит значение переменнойa
на экран. - Переменная
a
объявлена как внешняя, доступная для всех файлов, которые включают файлы, где она определена. - Значение переменной
a
выводится на экран при вызове функцииf
. - В обоих файлах присутствует функция
main
, которая является точкой входа в программу. - В функции
main
присутствует вызов функцииsystem(
pause)
, которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет клавишу. - В обоих файлах присутствуют комментарии, которые описывают назначение и особенности кода.
- В обоих файлах используется библиотека
stdio.h
, которая содержит функции для работы с выводом на экран. - В обоих файлах используется библиотека
stdlib.h
, которая содержит функции для работы с генерацией случайных чисел, управлением памятью и т.д. - Значение переменной
a
не инициализируется и будет содержать случайное значение, если не будет установлено явно.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д