Тема: Клас пам'яті extern, оголошення зміної
Я не розумію як правильно оголошувати зміну класу пам'яті extern
файл Source.cpp
#include <conio.h>
#include <iostream>
#include "Header.h"
int main()
{
f();
std::cout << num;
num = 6;
std::cout << num;
getch();
return 0;
}
файл Source1.cpp
#include "Header.h"
int num;
void f()
{
num = 8;
}
файл Header.h
#pragma once
extern int num;
void f();
extern - зовнішня (глобальна) змінна. Зовнішні змінні доступні скрізь, де описані, а не тільки там, де визначені. Включення ключового слова extern дозволяє функції використовувати зовнішню змінну, навіть якщо вона визначається пізніше в цьому або іншому файлі.
я написав extern int num; тобто оголосив її глобальною для всіх файлів
то навіщо мені ще раз її оголошувати в Source1.cpp як звичайну зміну а в Source.cpp не оголошувати, звідки мені дізнатися де її потрібно повторно оголосити а де ні ?