🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.std.c
Article #2579

ANSI vs K&R 3.7.1 structures Help!

#2579
From: john c kelly
Date: Fri, 22 Mar 1991 18:37
81 lines
4166 bytes
         Sorry to bother everyone but  I  am  about to port a fair size
    application from one machine to another.  I had not done much  work
    on  the  target  machine  so  I  decided to checkout the compiler's
    capabilities.  I took a copy  of  the  C torture tests and tried to
    compile the code on the new machine.  I could not  do  the  testing
    myself, the  system administrator  had to,  so I  placed all of the
    code  into  one single file and he ran the compiler, which promptly
    died.  The sysadmin put in  a  service  call and sent a copy of the
    code to the engineers  and they replied:

              This note is to explain why we do not think that the
         test case code is a valid ANSI C program.  Please note we
         only  support the K&R standard where it agrees with ANSI.

              In ANSI  3.7.1,  5th  paragraph  of the 'Contraints'
         section, it  states:   'If  the  declarator  includes  an
         identifier list, each declaration in the declaration list
         shall have at least one declarator, and those declarators
         shall declare only identifiers from the identifier list.'

              The  key  point  is  that  each function must have a
         declarator.


         In function s22(pd0) you declared a structure :

              struct defs {
                            ... some stuff
                            ... some more stuff
              };     /* <--- should be a declarator here. */

              struct defs *pd0;


              The problem with your code is that the 'struct defs'
         statement does  not  have  a  declarator.   The  compiler
         dosen't  like  the  semi-colon because it is expecting an
         identifier for the  declarator.

              The following is what  the ANSI version of the above
         code looks like:


              struct defs {
                            ... some stuff
                            ... some more stuff
              } *pd0;  /* <--- now the declaration has a declarator. */


              We converted the test case to ANSI format,  and  got
         further  compile  errors  becasue  the compiler gives the
         definition of  'struct  defs'  tag  in  function s22 file
         scope, and so  each  subsequent  declaration  of  'struct
         defs' receives an error message that stuct tags cannot be
         redefined.   The  way  to  resolve that is to only do one
         defintion of the 'struct  defs' tag.


         HELP!   I am highly suspicious of their response.  I have used
    this stye of code before.  In  fact  the code compiles fine using 5
    other compilers!   I don't  have the  ANSI spec  to quote from so I
    appeal to the C-NET-GODS to tell me if they are blowing smoke or  I
    am  just  stupid.  One thing that really wories me is that they say
    the 'stuct defs' tag  has  been  given file scope.  It was declared
    INSIDE the function!  I thought that this made it local not global.

         ANY  help  or  suggstions  would  be  greatly appreciated.  If
    possible e-mail directly to  me  I'll summarize if enough interest.

    John C. Kelly                           MaBell: 717-986-5038
    Prime System Integration  (prefered)--> Prime:  j.kelly@md-b.prime.com
    Prime Computer Inc.                     Client: ampt0659@s2901b.amp.com
    DISCLAIMER: I speak for me.  Only.      Home:   jkelly@world.std.com
    "You can demonstrate a program for an executive - but  you  can't  make
     him computer literate."
-- 

  John C. Kelly                           MaBell: 717-986-5038
  Prime System Integration                Prime:  j.kelly@md-b.prime.com
  Prime Computer Inc.                     Client: ampt0659@s2901b.amp.com
Technical Details
Message-ID: <1991Mar22.183721.11779@world.std.com>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!cs.utexas.edu!uunet!world!jkelly

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!cs.utexas.edu!uunet!world!jkelly
From: jkelly@world.std.com (john c kelly)
Newsgroups: comp.std.c
Subject: ANSI vs K&R 3.7.1 structures Help!
Message-ID: <1991Mar22.183721.11779@world.std.com>
Date: 22 Mar 91 18:37:21 GMT
Organization: The World
Lines: 81