Нет. Спецификация C фактически где-то говорит (я читал спецификацию, верю этому или нет), что основная функция не может быть статической.
Причина этого в том, что статический означает "не позволяйте ничему вне этого исходного файла использовать этот объект". Преимущество состоит в том, что он защищает от коллизий имен в C, когда вы переходите по ссылке (было бы очень плохо, плохо, если бы у вас было два глобала, оба с именем "is_initialized" в разных файлах ... они были бы незаметно объединены, если вы не сделали их статика). Это также позволяет компилятору выполнять определенные оптимизации, которые он не смог бы выполнить иначе. Эти две причины - то, почему статика - хорошая вещь.
Поскольку вы не можете получить доступ к статическим функциям вне файла, как ОС сможет получить доступ к основной функции для запуска вашей программы? Вот почему main не может быть статичным.
Некоторые компиляторы обрабатывают «main» специально и могут молча игнорировать вас, когда вы объявляете его статическим.
Редактировать: Похоже, я был неправ в том, что спецификация говорит, что main не может быть статичным, но он говорит, что он не может быть встроенным в размещенной среде (если вам нужно спросить, что означает «размещенная среда», то ты в одном). Но в OS X и Linux, если вы объявите main static, вы получите ошибку ссылки, потому что компоновщик не может найти определение «main».