Path: utzoo!utgpu!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!cwjcc!ukma!rutgers!cmcl2!adm!smoke!gwyn From: gwyn@smoke.BRL.MIL (Doug Gwyn ) Newsgroups: comp.lang.c Subject: Re: The world is not ready for 'volatile' Message-ID: <9252@smoke.BRL.MIL> Date: 2 Jan 89 02:20:50 GMT References: <141@bms-at.UUCP> <275@twwells.uucp> <15166@mimsy.UUCP> <9236@smoke.BRL.MIL> <15171@mimsy.UUCP> Reply-To: gwyn@brl.arpa (Doug Gwyn (VLD/VMB) ) Organization: Ballistic Research Lab (BRL), APG, MD. Lines: 22 >[I wrote:] >>A STORAGE CLASS by no means obviates the need for type qualifiers. In article <15171@mimsy.UUCP> chris@mimsy.UUCP (Chris Torek) writes: >I did not say that. I said `register implies not-volatile, not- >aliased': that `volatile register' and `aliased register' are >nonsensical combinations. Of course there are nonsensical expressions in ANY version of C that are not ruled "illegal" just because they're useless. But I thought you were trying to claim that "volatile" could have been dispensed with and the necessary additional semantics invested in "register", and THAT is what I dispute, because type qualifiers can apply at any of the "levels" of a type declaration, unlike storage class specifiers (which apply to the identifier, in effect). Thus register const int * volatile * const ptr = SOMETHING; has a well-defined and possibly useful meaning, which would be impossible (I think) to mimic correctly by stretching "register" to serve as a type qualifier while not breaking existing usage of "register". In any case the switch from a storage class specifier to a type qualifier would be pretty drastic!