Why is max length of C string literal different from max char[]?
===

The C89 standard has a translation limit for string literals:

> 509 characters in a character string literal or wide string literal (after concatenation)

There isn't a limit for a char arrays; perhaps
> 32767 bytes in an object (in a hosted environment only)

applies (I'm not sure what object or hosted environment means), but at any rate it's a much higher limit.

My understanding is that a string literal is equivalent to char array containing characters, ie: it's always possible to rewrite something like this:

    const char* str = "foo";
into this

    const char __THE_LITERAL = { 'f', 'o', 'o', '\0' };
    const char* str = __THE_LITERAL;

So why such a hard limit on literals?
