From: Carlo Florendo <subscribermail@gmail.com>
To: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Cc: Robert Hancock <hancockr@shaw.ca>,
Stefan Richter <stefanr@s5r6.in-berlin.de>,
Andi Kleen <andi@firstfloor.org>,
linux-kernel@vger.kernel.org
Subject: Re: gcc fixed size char array initialization bug - known?
Date: Fri, 03 Aug 2007 12:57:23 +0800 [thread overview]
Message-ID: <46B2B5B3.5050303@gmail.com> (raw)
In-Reply-To: <Pine.LNX.4.60.0708030024490.6774@poirot.grange>
Guennadi Liakhovetski wrote:
> On Thu, 2 Aug 2007, Robert Hancock wrote:
>
>> Because 5 characters will not fit in a 4 character array, even without the
>> null terminator.
>
> On Fri, 3 Aug 2007, Stefan Richter wrote:
>
>> How should gcc know whether you actually wanted that char foo[len] to
>> contain a \0 as last element?
>
> Robert, Stefan, I am sorry, I think, you are VERY wrong here. There is no
> "even" and no guessing. The "string" DOES include a terminating '\0'. It
> is EQUIVALENT to {'s', 't', 'r', 'i', 'n', 'g', '\0'}. And it contains
> SEVEN characters. Please, re-read your K&R. Specifically, the Section
> "Initialization" in the "Function and Program Structure" chapter (section
> 4.9 in my copy), the paragraph about initialization with a string, which I
> quoted in an earlier email.
Guennadi,
The declaration
char c[4] = "abcd";
is perfectly valid.
If other versions of gcc give warnings with that declaration, then those
warnings may be useful but it does not mean to say that other versions of
gcc follow the standards or not.
K&R is good as a reference but not as an authority. They drafted the book
as an informal specification of C. C has evolved throughout the decades.
The current standard is C99. And as quoted earlier in this thread,
character array initializations are described as:
6.7.8.14 of C99:
An array of character type may be initialized by a character string
literal, optionally enclosed in braces. Successive characters of the
character string literal (including the terminating null character if there
is room or if the array is of unknown size) initialize the elements of the
array.
The gcc warning you see on other versions is a warning that does not have
anything to do with the current C standard. The other versions of gcc that
do not emit such character initialization warnings do not mean that they
are buggy in that respect.
IOW, the fact that you did not see the warning in a certain gcc version
does not mean that it is buggy in that respect.
Thank you very much.
Best Regards,
Carlo
--
Carlo Florendo
Softare Engineer/Network Co-Administrator
Astra Philippines Inc.
UP-Ayala Technopark, UP Campus Diliman
1101 Quezon City, Philippines
http://www.astra.ph
--
The Astra Group of Companies
5-3-11 Sekido, Tama City
Tokyo 206-0011, Japan
http://www.astra.co.jp
next prev parent reply other threads:[~2007-08-03 4:57 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-02 19:55 gcc fixed size char array initialization bug - known? Guennadi Liakhovetski
2007-08-02 19:59 ` Jan Engelhardt
2007-08-02 20:03 ` Jesper Juhl
2007-08-02 20:10 ` Al Viro
2007-08-02 20:12 ` Jesper Juhl
2007-08-02 20:15 ` Guennadi Liakhovetski
2007-08-03 3:17 ` Satyam Sharma
2007-08-03 3:40 ` WANG Cong
2007-08-03 7:32 ` Bernd Petrovitsch
2007-08-02 20:08 ` Al Viro
2007-08-02 20:21 ` Guennadi Liakhovetski
2007-08-02 20:26 ` Guennadi Liakhovetski
2007-08-02 21:09 ` Al Viro
2007-08-02 21:26 ` Guennadi Liakhovetski
2007-08-02 20:18 ` Jan Engelhardt
2007-08-02 21:06 ` Andi Kleen
2007-08-02 20:36 ` Guennadi Liakhovetski
2007-08-02 22:15 ` Stefan Richter
2007-08-02 22:36 ` Guennadi Liakhovetski
2007-08-02 22:42 ` (off-topic) " Stefan Richter
2007-08-02 22:54 ` Randy Dunlap
2007-08-02 23:03 ` Al Viro
2007-08-02 23:26 ` Guennadi Liakhovetski
2007-08-02 23:34 ` Rene Herman
2007-08-03 5:00 ` Carlo Florendo
2007-08-02 23:02 ` Al Viro
2007-08-03 4:57 ` Carlo Florendo [this message]
2007-08-02 22:31 ` Stefan Richter
2007-08-02 22:51 ` Guennadi Liakhovetski
2007-08-02 23:09 ` Al Viro
2007-08-02 23:27 ` Stefan Richter
2007-08-02 23:30 ` Guennadi Liakhovetski
2007-08-03 7:56 ` Jan Engelhardt
2007-08-03 14:04 ` Alexander van Heukelum
2007-08-02 23:42 ` Jakub Jelinek
2007-08-03 15:16 ` Stefan Richter
[not found] <fa.LxMYkBaN628VuktB9CFi9SC3LTA@ifi.uio.no>
[not found] ` <fa.6wYNfcIjXc+jXzdUGE5gFFOal1g@ifi.uio.no>
[not found] ` <fa.cjPWb5ZShF43DhggNXkMKMadPYY@ifi.uio.no>
2007-08-02 21:42 ` Robert Hancock
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=46B2B5B3.5050303@gmail.com \
--to=subscribermail@gmail.com \
--cc=andi@firstfloor.org \
--cc=g.liakhovetski@gmx.de \
--cc=hancockr@shaw.ca \
--cc=linux-kernel@vger.kernel.org \
--cc=stefanr@s5r6.in-berlin.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox