[comp.lang.c] Pointer Problem

liang@CS.UOREGON.EDU (03/10/90)

						Mar, 9, 1990

   I attempted to port a compiler written in C from Unix into PC for my

 friend. When I compiled parser.c with Microsoft C 4.0, I got following 

 error message


	"parser.c(167):warning 47: '=' : different levels of indirection"


   Following is the code: 

   /* code in line 167 is final_ast = program(root); */

   struct ast {			/* abstract syntax tree */
		int info;
		int tval;
		int ln;
		struct ast *left;
		struct ast *right;
	      };


   struct ast *root, *final_ast;

		:
		:

    final_ast = program(root);  /* This is the line 167, error happen here */

		:
		:
		:

    struct ast *program(root) 	/* The declaration of function program */
    struct ast *root;
    {
          	:
		:
		:
    }
	


	If anyone knows the reason or how to fix it, please drop me a note

   by email.


			Thanks in advance.



						Steve J. Zhang


    email: liang@cs.uoregon.edu

wittig@gmdzi.UUCP (Georg Wittig) (03/15/90)

liang@CS.UOREGON.EDU writes:

>	"parser.c(167):warning 47: '=' : different levels of indirection"
...
>   struct ast *root, *final_ast;
...
>    final_ast = program(root);  /* This is the line 167, error happen here */

	At that point, the type of ``program'' is not known to the compiler, so
	the default applies: ``program'' gets implicitly type ``function
	returning int''.

	Declare ``program'' before that line 167!

-- 
Georg Wittig   GMD-Z1.BI   P.O. Box 1240   D-5205 St. Augustin 1 (West Germany)
email: wittig@gmdzi.uucp   phone: (+49 2241) 14-2294
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
"Freedom's just another word for nothing left to lose" (Kris Kristofferson)