Я собираюсь полностью перефразировать этот вопрос, так как я не совсем получаю решения, которые искал (они полезны, но они не говорили ничего, что другие вопросы, на которые я ссылался, не говорили).
Имеются следующие 4 файла:
файл № 1: А
class A { void a_func(); };
файл № 2: A.cpp
#include "A.h"
static int x = 4;
void A::a_func() {
//implementation.
}
файл № 3:Bh
#include "A.h"
class B { void b_func(); };
file # 4: B.cpp
#include "B.h"
static int x = 3;
void B::b_func() {
//implementation.
}
Вопрос № 1: Поскольку Bh включает в себя Ah, является ли A.cpp частью блока компиляции B?
Вопрос № 2: Будет ли ошибка, поскольку A.cpp и B.cpp оба объявляют одно и то же имя статической переменной (x)?Я слышал, что статические глобальные переменные имеют статическую связь, которая зависит от единицы перевода, но поскольку я не знал о вопросе № 1, это мне не сильно помогло.