Я новичок в программировании на C, поэтому я стараюсь много разных вещей, чтобы попробовать и ознакомиться с языком.
Я написал следующее:
Файл q7a.h:
static int err_code = 3;
void printErrCode(void);
Файл q7a.c:
#include <stdio.h>
#include "q7a.h"
void printErrCode(void)
{
printf ("%d\n", err_code);
}
Файл q7main.c:
#include "q7a.h"
int main(void)
{
err_code = 5;
printErrCode();
return 0;
}
Затем я запустил следующее в make файле (я использую ОС Linux)
gcc –Wall –c q7a.c –o q7a.o
gcc –Wall –c q7main.c –o q7main.o
gcc q7main.o q7a.o –o q7
выход равен 3.
Почему это происходит?
Если вы инициализируете статическую переменную (фактически любую переменную) в файле заголовка, поэтому, если 2 файла содержат один и тот же заголовочный файл (в этом случае q7.c и q7main.c), компоновщик предназначен для получения ошибки для определяя дважды тот же var?
И почему значение 5 не вставлено в статический var (ведь оно статично и глобально)?
Спасибо за помощь.