Работа компилятора с несколькими файлами - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Я нарочно сделал неправильно(хочу понять логику работы компилятора) Почему ошибка _f уже определен в main.obj main.c
#include <stdio.h>
#include <stdlib.h>
#include "tmp.c"
 
int a;
 
int main(){
    system("pause");
}
tmp.c
#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);
}

Объяснение кода листинга программы

  1. main.c и tmp.c - названия файлов, где написан код.
  2. extern int a; - объявление переменной a как внешней, доступной для всех файлов, которые включают данный файл.
  3. printf(a=%d,a); - выводит значение переменной a на экран.
  4. int a; - определение переменной a типа int.
  5. system(pause); - функция, которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет клавишу.
  6. void f(void){ - функция с именем f, которая не принимает аргументов и возвращает void.
  7. extern int a; - в функции f объявляется переменная a как внешняя.
  8. printf(a=%d,a); - в функции f выводится значение переменной a на экран.
  9. int a; - определение переменной a типа int в функции f.
  10. В обоих файлах присутствуют строки #include <stdio.h>, которые включают в код содержимое файла stdio.h.
  11. В обоих файлах присутствуют строки #include <stdlib.h>, которые включают в код содержимое файла stdlib.h.
  12. В обоих файлах присутствует функция f, которая выводит значение переменной a на экран.
  13. Переменная a объявлена как внешняя, доступная для всех файлов, которые включают файлы, где она определена.
  14. Значение переменной a выводится на экран при вызове функции f.
  15. В обоих файлах присутствует функция main, которая является точкой входа в программу.
  16. В функции main присутствует вызов функции system(pause), которая приостанавливает выполнение программы до тех пор, пока пользователь не нажмет клавишу.
  17. В обоих файлах присутствуют комментарии, которые описывают назначение и особенности кода.
  18. В обоих файлах используется библиотека stdio.h, которая содержит функции для работы с выводом на экран.
  19. В обоих файлах используется библиотека stdlib.h, которая содержит функции для работы с генерацией случайных чисел, управлением памятью и т.д.
  20. Значение переменной a не инициализируется и будет содержать случайное значение, если не будет установлено явно.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5