Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!ames!sun-barr!decwrl!megatest!djones From: djones@megatest.UUCP (Dave Jones) Newsgroups: comp.lang.c Subject: Mallocking (Re: pointers to pointers to functions) Message-ID: <8719@goofy.megatest.UUCP> Date: 13 Oct 89 00:23:41 GMT References: <8247@medusa.cs.purdue.edu> Distribution: usa Organization: Megatest Corporation, San Jose, Ca Lines: 52 From article <8247@medusa.cs.purdue.edu>, by bouma@cs.purdue.EDU (William J. Bouma): > > I need a list of pointers to functions to be malloced. It's spelled "mallocked", not "malloced". Like pinic/picnicked, dontchaknow. > What is the syntax? > I declared this thing to hold it: > > int (**f)(); > > And then I tried mallocing some space for it "mallocking". > like this: > > f = (int (**)()) malloc(n * sizof(*f)); > Looks right to me, except that you misspelled sizeof. (Also be be sure you declare malloc correctly, as returning a generic pointer.) There is also some question as to whether it is morally correct to use the expression "*f" at a point in the program where f can not be pointing to anything. But then again, sizeof is not a runtime function, it is a compile-time calculation, so what does it matter? The comp.religion.police can work out the details. Be sure not to keep me informed. Thank you very much. > When the compiler hits that line I get this: > > illegal lhs of assignment operator > unacceptable operand of & > warning: illegal pointer/integer combination, op = > cannot recover from earlier errors: goodbye! > I think your compiler is broke. You can probably get around it with typedefs. Try this: extern void *malloc(); typedef int (**func_ptr_ptr)(); proc(n) { func_ptr_ptr f = (func_ptr_ptr)malloc(n * sizeof(*f)); }