В C и С++ (и нескольких других языках) горизонтальные табуляторы (ASCII-код 9) в символьных и строковых константах обозначаются в экранированной форме как '\t'
и "\t"
. Тем не менее, я регулярно печатаю символ неэкранированного табулятора в строковых литералах, например, в "A B"
(есть TAB в betreen A
и B
), и, по крайней мере, clang++, похоже, не беспокоит - строка кажется эквивалентны "A\tB"
. Мне больше нравится версия без возврата, так как длинные отступы с несколькими строками лучше читаются в исходном коде.
Теперь я спрашиваю себя, является ли это вообще законным в C и С++ или просто поддерживается моим компилятором. Насколько переносимыми являются невидимые табуляторы в символьных и строковых константах?
Удивительно, но я не смог найти ответ на этот, казалось бы, простой вопрос: ни с Google, ни со стековым потоком (я просто нашел этот неопределенный вопрос).