Path: utzoo!utgpu!news-server.csri.toronto.edu!bonnie.concordia.ca!ccu.umanitoba.ca!rpjday From: rpjday@ccu.umanitoba.ca Newsgroups: comp.lang.c Subject: Re: C language book recommendations Message-ID: <1991May24.192404.29227@ccu.umanitoba.ca> Date: 24 May 91 19:24:04 GMT References: <1991May6.101403.1@mscf.med.upenn.edu> <36770001@hpopd.pwd.hp.com> <1991May21.125840.12654@ccu.umanitoba.ca> <741@taumet.com> Organization: University of Manitoba, Winnipeg, Canada Lines: 49 In article <741@taumet.com> steve@taumet.com (Stephen Clamage) writes: >rpjday@ccu.umanitoba.ca writes: > >>>> C: A Reference Manual 3rd Edition >>>> Samuel P Harbison & Guy L Steele Jr >>>> Prentice Hall > >>Even the occasional annoying typo doesn't detract much. >>What typo? Glad you asked. > >>On [page 94], in a table showing the legalities of >>various declarations in various models, we read that > >>extern int x = 0 ; > >>in the omitted storage class model is treated as a reference. >>However, according to the explanation on p. 93, this should >>be illegal. Comments? > >Look over the material again. In their book, H&S are not presenting only >ANSI C. They are trying to cover the range of C implementations which have >been at all widely used. If you have to write code for a variety of C >implementations, or understand some moldy old code written for some >system you do not have access to, this book will help. It explains all >the common things which have been done, and how you can get your code >to work. > >As to your specific example, it is clearly marked in the table as >"illegal" for typical C implementations, and "Don't use" under >the "recommendation" column. >-- > >Steve Clamage, TauMetric Corp, steve@taumet.com I don't have my 3rd ed. of H&S here, so I may very well embarrass myself, but I think I checked out that section thoroughly enough to remember what it says. I am aware that H&S are showing various compiler models. They also quite CLEARLY say that one of them, the omitted storage class model, is what ANSI C uses. Their definition of this model is what I have given above. On the next page, they also CLEARLY say that "extern int x = 0;" is not, as you claim, illegal, but that it is to be treated as a reference -- that is, a referencing declaration. What H&S recommend is irrelevant. My concern is with the entry in the table. Comments? R. Day