Что касается имен стандартных заголовочных файлов C ++, в первые дни (первые 2 года) X3J16 мы столкнулись с аргументом о том, каким должно быть расширение стандартных заголовочных файлов C ++. Я использую в то время различными поставщиками (и под влиянием ограничений, которые некоторые операционные системы накладывают на имена файлов), я считаю, что были .h, .H, .h ++, .hpp, .HXX и, возможно, другие. На собрании группы библиотек я предложил оставить расширение выключенным и оставить его на усмотрение реализации, чтобы предоставить расширение по умолчанию для файла по своему выбору, если его нет в строке включения, или использовать имя в качестве ключа в базе данных предварительно скомпилированные заголовочные файлы при желании. [В то время как Unix-подобные системы рассматривают имя файла и «расширение» как одну строку, я представлял DEC в комитете, и многие операционные системы DEC хранили расширение в каталоге как отдельное поле от имени. Поэтому в операционных системах DEC существовала давняя традиция применения расширения по умолчанию в зависимости от того, какая программа обращалась к файлу с какой целью. Указание ассемблеру «X, Y = Z» может привести к чтению входного файла Z.MAC (макрос) и записи выходных файлов X.OBJ и Y.LST.] В любом случае, это позволило избежать долгих дебатов без побед, поэтому группа согласился с этим, и Энди Кениг представил выводы группы по этому (среди прочего) всему комитету, который принял его. Я нахожу несколько забавным, что реализации упускают из виду тот факт, что они могут применять расширение по умолчанию по своему выбору (которое, я думаю, будет полезно для редакторов и других инструментов) и просто оставляют расширение вне имени файла.