[comp.lang.c] lint and VARARGS

edw@ius2.cs.cmu.edu (Eddie Wyatt) (07/14/87)

The problem, the answer...

:bc.c

       /* VARARGS 0 */
       void tt(x,y)
           int x,y;
           {
           (void) printf("%d %d\n",x,y);
           }

:bb.c

	extern void tt();

	main()
    	    {
    	    tt(9.0);
    	    }

lint bc.c bb.c

	bb.c:
	bc.c:
	tt, arg. 1 used inconsistently	bc.c(4)  ::  bb.c(5)



>From the man pages:

     /*VARARGS n*/
          suppresses the usual checking for variable numbers of
          arguments in the following function declaration.  The
          data types of the first n arguments are checked; a
          missing n is taken to be 0.


From: Ray Butterworth <rbutterworth%orchid.waterloo.edu@RELAY.CS.NET>

.Many versions (especially those like BSD based on the PCC version)
.of lint have a bug that causes VARARGS0 to ignore the 0.  i.e. asking
.for any # >0 checks only the first # arguments, but asking for # = 0
.checks all arguments.

.If you already knew this...

    No, I didn't know it for sure, but I suppected it after I couldn't
get the damn thing to work right.

  I hope you don't mind me posting your answer Ray.  I appreciate
the help very much.  I appreciate others that have replied also but
I would like to say, I do know how the type "man lint". :-)

-- 
					Eddie Wyatt

e-mail: edw@ius2.cs.cmu.edu

terrorist, cryptography, DES, drugs, cipher, secret, decode, NSA, CIA, NRO.