pda@litp.UUCP (Pierre DAVID) (09/14/88)
Hello C gurus !
I would like to know if these two programs are ANSI-C strictly conforming
or not. If not, I would appreciate if someone could tell me exactly
why (I have the January 1988 draft).
----- Program A -------------------------
typedef int t1, t2 ;
void f1 (t1) ; /* "t1" is the parameter type */
void f2 (t2) /* "t2" is a parameter, hiding "t2" type definition */
int t2 ;
{
void f3 (t1) ; /* "f3" declaration. "t1" is the type of the parameter */
}
----- Program B -------------------------
typedef int type ;
/*
* "f" is of type "type"
* "f" has a parameter named "type" whose type is "type"
*/
type f (type type)
{
return type+1 ;
}
-----------------------------------------
Thanks to all.
Pierre David
pda@litp.uucp
...!uunet!mcvax!inria!litp!pdapda@litp.UUCP (Pierre DAVID) (09/15/88)
In article <387@litp.UUCP>, I wrote: > I would like to know if these two programs are ANSI-C strictly conforming > or not. If not, I would appreciate if someone could tell me exactly > why (I have the January 1988 draft). > > typedef int t1, t2 ; > void f1 (t1) ; > void f2 (t2) > int t2 ; > { > void f3 (t1) ; > } > > typedef int type ; > type f (type type) > { > return type+1 ; > } The answer is NO ! I have found the answer in paragraph 3.7.1 (Function definitions), in "Constraints" : An identifier declared as a typedef name shall not be redeclared as a parameter. One more C particularism... Pierre David pda@litp.uucp ...!uunet!mcvax!inria!litp!pda