468,491 Members | 1,916 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,491 developers. It's quick & easy.

size limits for string literals

Do the standards say anything about size limits for string literals (min
size, max size)? I want to know this to make sure that my code is portable.
The program in question is ANSI C89, but I would also be interested in
whether or not ISO C99 changed the limits (if any exist).


Mar 25 '08 #1
7 7120
"copx" <co**@gazeta.plwrote:
Do the standards say anything about size limits for string literals (min
size, max size)? I want to know this to make sure that my code is portable.
The program in question is ANSI C89, but I would also be interested in
whether or not ISO C99 changed the limits (if any exist).
Minima, of course not; an empty string is valid in any language. The
notional limit on the size of a string literal in The One Program (and
see discussions of that program in this newsgroup over the years to know
why all these limits are always slightly misleading) is 509 characters
in C89, and 4095 in C99. Both of these are valid for normal and wide
strings, and _after_ concatenation (so you can't get around them with a
trick like "almost_too_long_string" "another_long_string").

Richard
Mar 25 '08 #2
copx said:
Do the standards say anything about size limits for string literals (min
size, max size)?
Clearly, the minimum size is 1 (because sizeof "" is 1).

The maximum size of a string literal or wide string literal (after
concatenation, e.g. from "foo" "bar" to "foobar") that an implementation
*must* support is 509 in C90. This has been increased to 4095 in C99.

So if all your string literals are shorter than that, you will not break
anything. If you make them longer, you're relying on your implementation
being nice to you.

<snip>

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Mar 25 '08 #3
In article <47****************@news.xs4all.nl>,
Richard Bos <rl*@hoekstra-uitgeverij.nlwrote:
>Minima, of course not; an empty string is valid in any language.
I believe I've worked with some languages which did not support
empty strings, but it has been long enough since then that I could
not name any specifics.
--
"What we have to do is to be forever curiously testing new
opinions and courting new impressions." -- Walter Pater
Mar 25 '08 #4
copx wrote:
>
Do the standards say anything about size limits for string literals (min
size, max size)? I want to know this to make sure that my code is portable.
The program in question is ANSI C89, but I would also be interested in
whether or not ISO C99 changed the limits (if any exist).
Yes they do. I believe the C89/C90/C95 limit is roughly 510 bytes,
and that C99 expanded it to roughly 1020 bytes. Look in the C
standard.

Some useful references about C:
<http://www.ungerhu.com/jxh/clc.welcome.txt>
<http://c-faq.com/ (C-faq)
<http://benpfaff.org/writings/clc/off-topic.html>
<http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf(C99)
<http://cbfalconer.home.att.net/download/n869_txt.bz2(C99, txt)
<http://www.dinkumware.com/c99.aspx (C-library}
<http://gcc.gnu.org/onlinedocs/ (GNU docs)
<http://clc-wiki.net/wiki/C_community:comp.lang.c:Introduction>

--
[mail]: Chuck F (cbfalconer at maineline dot net)
[page]: <http://cbfalconer.home.att.net>
Try the download section.

--
Posted via a free Usenet account from http://www.teranews.com

Mar 26 '08 #5

"copx" <co**@gazeta.plschrieb im Newsbeitrag
news:fs**********@inews.gazeta.pl...
Do the standards say anything about size limits for string literals (min
size, max size)?
[snip]

Thanks everyone!
Mar 26 '08 #6
CBFalconer said:
copx wrote:
>>
Do the standards say anything about size limits for string literals (min
size, max size)? I want to know this to make sure that my code is
portable. The program in question is ANSI C89, but I would also be
interested in whether or not ISO C99 changed the limits (if any exist).

Yes they do. I believe the C89/C90/C95 limit is roughly 510 bytes,
509 - not so far off...
and that C99 expanded it to roughly 1020 bytes.
....but I don't think 4095 can be plausibly called "roughly 1020".

--
Richard Heathfield <http://www.cpax.org.uk>
Email: -http://www. +rjh@
Google users: <http://www.cpax.org.uk/prg/writings/googly.php>
"Usenet is a strange place" - dmr 29 July 1999
Mar 26 '08 #7
Richard Heathfield wrote:
CBFalconer said:
>copx wrote:
>>>
Do the standards say anything about size limits for string
literals (min size, max size)? I want to know this to make sure
that my code is portable. The program in question is ANSI C89,
but I would also be interested in whether or not ISO C99 changed
the limits (if any exist).

Yes they do. I believe the C89/C90/C95 limit is roughly 510 bytes,

509 - not so far off...
>and that C99 expanded it to roughly 1020 bytes.

...but I don't think 4095 can be plausibly called "roughly 1020".
True. However, if we express the values with logarithms, it is
only an error by a factor of 2. Trivial. :-)

--
[mail]: Chuck F (cbfalconer at maineline dot net)
[page]: <http://cbfalconer.home.att.net>
Try the download section.

--
Posted via a free Usenet account from http://www.teranews.com

Mar 26 '08 #8

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by Kums | last post: by
16 posts views Thread by Don Starr | last post: by
13 posts views Thread by James | last post: by
8 posts views Thread by junky_fellow | last post: by
23 posts views Thread by Matt Garman | last post: by
6 posts views Thread by copx | last post: by
111 posts views Thread by Tonio Cartonio | last post: by
4 posts views Thread by truezplaya | last post: by
reply views Thread by NPC403 | last post: by
3 posts views Thread by gieforce | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.