Я новичок в программировании на 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 (ведь он статический и глобальный)?
Спасибо за помощь.