Я слышал, что вам не следует определять что-либо в файлах заголовков из-за возможности множественных определений, но если у вас есть включаемые охранники, этого не должно происходить, верно? Какие еще есть причины для добавления extern к переменным?