Изучая переменные extern
и static
в C / C ++, я наткнулся на этот ответ .
Возможно, я упускаю какой-то момент, но этот ответ вызвал сомнения относительно моего кода.
Предположим, у меня есть следующие файлы:
static int global_foo = -1;
void doSomething(void);
#include "header.h"
void doSomething(void) {
global_foo = 1;
}
#include "header.h"
int main(void) {
doSomething();
printf("%d\n", global_foo);
}
Что такое вывод printf в основной функции? Моя интерпретация заключается в том, что, поскольку global_foo
включено два раза, будет два различных global_foo
, и поэтому одно такое изменение повлияет только на global_foo
файла, которому оно принадлежит.