Path: utzoo!utgpu!water!watmath!clyde!att-cb!att-ih!pacbell!ames!ucsd!sdcsvax!ucsdhub!hp-sdd!hplabs!sdcrdcf!markb From: markb@sdcrdcf.UUCP (Mark Biggar) Newsgroups: comp.lang.c Subject: Re: Machine specific predefined names Message-ID: <5202@sdcrdcf.UUCP> Date: 1 Apr 88 18:40:21 GMT References: <1988Feb17.115402.12739@light.uucp> <17033@watmath.waterloo.edu> <242@sdrc.UUCP> <378@wsccs.UUCP> <3225@haddock.ISC.COM> <598@tuvie> <3264@haddock.ISC.COM> Reply-To: markb@sdcrdcf.UUCP (Mark Biggar) Organization: Unisys - System Development Group, Santa Monica Lines: 21 In article <3264@haddock.ISC.COM> karl@haddock.ima.isc.com (Karl Heuer) writes: |In article <598@tuvie> rcvie@tuvie.UUCP (Alcatel-ELIN Forsch.z.) writes: ||In article <3225@haddock.ISC.COM> karl@haddock.ima.isc.com (Karl Heuer) writes: ||>If you try to redefine *any* standard routine -- whether macro or function ||>-- the result should be, and is, undefined. Why should the user be forced ||>to learn the implementation details? ||Just try the portable way and noone has to learn anything but that there ||*are* some routines implemented as functions and some as macros: || #undef putchar || |That isn't portable. After you've redefined something, you have no way of |knowing whether other library routines (e.g. puts) will be using your putchar |or the standard one. I thought the standard included a guarantee that if you did the above that the libraries would still continue to use the original definition. In fact the whole reason for the necessity of using the #undef etc. was to allow for that guarantee. Mark Biggar {allegra,burdvax,cbosgd,hplabs,ihnp4,akgua,sdcsvax}!sdcrdcf!markb markb@rdcf.sm.unisys.com