Стандарт C не предусматривает никаких правил относительно порядка реализации описателей объявлений, спецификаторов классов хранения, спецификаторов типов, спецификаторов типов данных или спецификаторов выравнивания внутри объявления определенного объекта.
Вы можете смешивать их произвольно.
Цитата из ISO / IEC 9899: 2018, раздел 6.7.2 / 2
"По крайней мере один спецификатор типа должен быть указан в спецификаторы объявлений в каждом объявлении и в списке спецификаторов-спецификаторов в каждом объявлении структуры и имени типа. Каждый список спецификаторов типов должен представлять собой один из следующих мультимножеств (разделенных запятыми, если в элементе содержится более одного мультимножества); спецификаторы типа могут встречаться в любом порядке, возможно, смешанными с другими спецификаторами объявления . "
Единственными ограничениями являются, по крайней мере, один спецификатор типа и, по крайней мере, один идентификатор должен быть предоставлен, а идентификатор должен стоять справа от декларации.
Кстати, есть еще одна вещь, которую следует учитывать, хотя она синтаксически верна пока . Указатель класса хранения устарел куда-либо, кроме первой позиции.
Цитата из ISO / IEC 9899: 2011, Раздел 6.11.5 - Спецификаторы класса хранения:
"Размещение спецификатора класса хранения, отличного от начала спецификаторов объявления в объявлении, является устаревшей функцией."
Таким образом,
static const long long int a;
можно записать как:
static long int const long a;
или
static long const long int a;
или
static int const long long a;
Но чтобы ваш код читался и ясно для будущих читателей, вы должны использовать общее соглашение.