Поделиться через


Максимальная длина строки

Блок, относящийся только к системам Майкрософт

В режиме совместимости с ANSI требуется, чтобы компилятор принимал до 509 символов в строковом литерале после объединения. Максимальная допустимая длина строкового литерала в Microsoft C — приблизительно 2048 байтов. Однако если строковый литерал состоит из двух частей, заключенных в двойные кавычки, препроцессор объединяет эти части в одну строку, и для каждой объединенной строки добавляет дополнительный байт к общему количеству байтов.

Например, предположим, что строка состоит из 40 строк с 50 символами в каждой строке (2000 символов) и одной строки с 7 символами и что каждая строка заключена в двойные кавычки. Это значит, что добавляется до 2007 байтов плюс один байт для завершающего нуль-символа, то есть всего 2008 байтов. В объединении дополнительный символ добавляется для каждой из первых 40 строк. В результате мы получаем 2048 байтов. Обратите внимание, что если продолжения строки (\) используются вместо двойных кавычки, препроцессор не добавляет дополнительный символ для каждой строки.

Хотя отдельные строки в кавычках не могут быть длиннее 2048 байтов, объединив строки, можно создать строковый литерал, состоящий приблизительно из 65535 байтов.

Завершение блока, относящегося только к системам Майкрософт

См. также

Строковые литералы в C