Function pointer syntax peculiarity
    Chris Torek 
    chris at umcp-cs.UUCP
       
    Fri Nov 30 07:29:12 AEST 1984
    
    
  
I think this has been mentioned before.  PCC accepts almost anything as
a function.  Try
	f(g)
	int (*g)();
	{
		(**********g)(1);
	}
for example.
I personally think it makes perfect sense to say
	f(g)
	int (*g)();
	{
		g(1);
	}
but this breaks the nice consistency between the way a variable is
declared and the way it is used.  (It makes sense since a function
name by itself is a pointer to that function; that is, I write
	main()
	{
		int (*f)();
		int foo();
		f = foo;	/* &foo is wrong */
		foo(6);
		(*f)(6);	/* but f(6) is wrong too */
	}
If & and * are inverses, I should be saying either "f = &foo" or
"f(6)", and I should be able to say "(*(&foo))(6)".)
However, "(*f)(<args>)" is correct, and it's a bug/feature that
PCC accepts other forms.
-- 
(This line accidently left nonblank.)
In-Real-Life: Chris Torek, Univ of MD Comp Sci Dept (301) 454-7690
UUCP:	{seismo,allegra,brl-bmd}!umcp-cs!chris
CSNet:	chris at umcp-cs		ARPA:	chris at maryland
    
    
More information about the Comp.lang.c
mailing list