TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: Bill Patterson
from: Mike Bilow
date: 1995-08-29 22:34:22
subject: Re: gcc2

Bill Patterson wrote in a message to Mike Bilow:

 MB> Both your instructor and this book are wrong.  As many people 
 MB> here have been trying to convince you, the actual wording of 
 MB> Section 7.9.5.2 of the ANSI C standard explicitly says that 
 MB> fflush() is defined only for output streams:
 MB> 
 MB>    int fflush(FILE *stream);
 MB> 
 MB>    If 'stream' points to an output stream or an update stream in 
 MB>    which the most recent operation was not input, the 'fflush' 
 MB>    function causes any unwritten data to be delivered to the host 
 MB>    environment to be written to a file; otherwise, the behavior is 
 MB>    undefined.

 BP> It might be undefined, but.... SAMS, Microsoft (C for 
 BP> yourself), Borland, and the Turbo C Bible all teach it that way.

This argument is growing somewhat pointless, but I should point out that
the term "undefined behavior" is itself explicitly defined by
Section 3.16 of the ANSI C standard:

   Behavior, upon use of a nonportable or erroneous program construct, of 
   erroneous data, or of indeterminately valued objects, for which this 
   International Standard imposes no requirements.  Permissible undefined 
   behavior ranges from ignoring the situation completely with unpredictable 
   results, to behaving during translation or program execution in a 
   documented manner characteristic of the environment (with or without the 
   issuance of a diagnostic message), to terminating a translation or 
   execution (with the issuance of a diagnostic message).

In other words, an ANSI C compiler is free to do whatever it wants when you
do something undefined, such as calling fflush() against an input stream. 
One compiler could ignore the call and do nothing, a second compiler could
delete any characters waiting to be read, and a third compiler could
terminate the program and issue a diagnostic message.  If you want to write
code like that, then feel free -- but it is foolish for you to argue that
it is good practice.
  
-- Mike


---
* Origin: N1BEE BBS +1 401 944 8498 V.34/V.FC/V.32bis/HST16.8 (1:323/107)
SEEN-BY: 105/42 620/243 711/401 409 410 413 430 807 808 809 934 955 712/407
SEEN-BY: 712/515 628 704 713/888 800/1 7877/2809
@PATH: 323/107 150 3615/50 396/1 270/101 105/103 42 712/515 711/808 809 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.