ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
20 июля
521243 Топик полностью
fk0, легенда (09.06.2014 14:29, просмотров: 90) ответил Petrovich на Создает. А нужно бывает, например, чтобы синхронно изменить размер каких-нибудь счетчиков принятых/отправленных байт. И вроде невидны чужим, и сразу меняет в нескольких файлах, причем без привнесения субъективной ошибки "здесь изменил здесь забыл".
Не пиши чуши. Статические переменные на уровне ассемблера и линкера не являются глобальными и в каждом модуле будут свои:  /* file header.h */ static int S; /* file a.c */ #include "header.h" #include "stdio.h" int a(void) { printf("%x\n", (unsigned)&S); return S++; } /* file b.c */#include "header.h" #include "stdio.h" int b(void) { printf("%x\n", (unsigned)&S); return S++; } /* file test.c */ #include <stdio.h> int a(void); int b(void); int main() { printf("%d\n", a()); printf("%d\n", a()); printf("%d\n", b()); printf("%d\n", a()); return 0; }
Компиляция: cc test.c a.c b.c

Вывод:$ ./a.out 
$ ./a.out 
804976c
0
804976c
1
8049770
0
804976c
2
Выводы самостоятельно осилишь?
[ZX]