В некоторых программах видел как вне тела функции объявляют переменную... без слова static или extern. Так я никогда не делал. Объясните - что будет если у внешней переменной (вне тела функции) не писать слово static? Вопрос исчерпан
static видна только в том модуле где она объявлена. Если этого слова нет, то она будет видна во всех других модулях. И к ней можно будет обратиться, объявив в другом модуле такую же с extern.
ну или не обязательно такую же - например в visual c++ можно с другим типом если она extern "C" или файл компилируется как си. насчет манглинга других компиляторов не в курсе)