Я не уверен, что вы пытаетесь сделать здесь, но вы повторно объявляете a
как статическую и внешнюю переменные в другом порядке.
При применении к переменной static
позволяет видеть глобальные переменные только в этом файле.extern
объявляет внешнюю переменную, определенную в другом месте.Так, например, вы бы объявили a
как extern, если он был первоначально определен в отдельном файле, и объявили бы его как static
, если он должен быть видимым только внутри самого этого файла.
Вот ошибки:
test.c:8:12: error: static declaration of ‘a’ follows non-static declaration
test.c:7:12: note: previous declaration of ‘a’ was here
Вы объявляете a
как внешнюю переменную (определенную в другом файле), но затем повторно объявляете ее как статическую, видимую только в этомfile.
В этом случае я бы рассмотрел, что означают эти классы хранения (extern, static и т. д.), а затем решил, как должна быть объявлена ваша переменная.