Максимально возможная длина строкового литерала в C

Какова максимально возможная длина строкового литерала в C? Если я не ошибаюсь, в Java и .NET максимально возможная длина 2^31 - 1.


person Hesper    schedule 17.10.2015    source источник
comment
Зависит от платформы, среды выполнения, компилятора, включает ли это Unicode?   -  person t0mm13b    schedule 18.10.2015
comment
Если вам нужно знать, вы, вероятно, делаете что-то не так. Но если вам действительно нужно знать, это как минимум 4095. Компилятору разрешено, но не обязательно принимать больше.   -  person n. 1.8e9-where's-my-share m.    schedule 18.10.2015
comment
Почему бы тебе просто не попробовать?   -  person SpiderPig    schedule 18.10.2015
comment
@SpiderPig: Потому что знание ограничения, налагаемого одним конкретным компилятором, менее полезно, чем знание того, что требует язык.   -  person Keith Thompson    schedule 18.10.2015
comment
port70.net/~nsz/c/c11/n1570.html# 5.2.4.1   -  person too honest for this site    schedule 18.10.2015


Ответы (1)


Не существует указанной верхней границы длины строкового литерала.

Стандарт требует, чтобы все реализации поддерживали строковые литералы длиной не менее 4095 символов после конкатенации, но компиляторы могут свободно поддерживать произвольные длинные строковые литералы. (Требование в C90 составляло 509 символов; C99 увеличило его до 4095.)

person Keith Thompson    schedule 17.10.2015