Насчёт длин, ИМХО, не всё так просто. Насчёт всё отдано программеру - не спорю. Но оптимизатор, бывает, заглядывает на длины констант - ему это надо;). Ну и "обычно небезопасные функции" семейства printf всё-таки в некоторых компиляторах разгребаются в процессе компиляции на несоответствие типов (насчёт длин не помню, но вроде не должно) аргументов формату - RVDMK такое умеет.