Path: utzoo!attcan!uunet!ginosko!gem.mps.ohio-state.edu!uwm.edu!ux1.cso.uiuc.edu!uicsrd.csrd.uiuc.edu!bruner From: bruner@uicsrd.csrd.uiuc.edu (John Bruner) Newsgroups: comp.lang.c Subject: Re: Why are @, `, and $ not used in C? Keywords: This is a historic question Message-ID: <1989Sep22.140429.11940@ux1.cso.uiuc.edu> Date: 22 Sep 89 14:04:29 GMT References: <509.nlhp3@oracle.nl> <19211@gatech.edu> <3068@ur-cc.UUCP> <1596@l.cc.purdue.edu> <408@illusion.UUCP> Sender: news@ux1.cso.uiuc.edu (News) Reply-To: bruner@uicsrd.csrd.uiuc.edu (John Bruner) Organization: Center for Supercomputing Research and Development, Univ. of Illinois Lines: 20 >>As I understand it, the reason that @ was not used instead of * for >>indirection was that @ was the UNIX line kill character. > >Of course, the '#' character was the erase character and yet it was used for >the pre-processor. I do agree that the '@' was likely avoided at least >partly for its use as a kill character, however. Early C programs did not rely so heavily upon the preprocessor. Even as late as the Sixth Edition (PDP-11) release, there was no "/usr/include", and "cc" (and the old "fc" Fortran) invoked the preprocessor only if the first character in the source file was a pound-sign. Hence, the overloading of the '#' erase character was not so onerous. The dollar-sign was not available for use in defining identifier names because it was (and still is on some machines such as a UNIX VAX) used to denote immediate operands in the assembler. The characters chosen by DEC which the UNIX assembler did not use for immediate and indirect operand formats were, of course, '#' and '@'. John Bruner Center for Supercomputing R&D, University of Illinois bruner@uicsrd.csrd.uiuc.edu (217) 244-4476