Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!news.glorb.com!news-out.readnews.com!news-xxxfer.readnews.com!news.misty.com!news.iecc.com!nerds-end From: glen herrmannsfeldt Newsgroups: comp.compilers Subject: Re: Help needed with function pointer examples Date: Sun, 15 Jan 2012 11:27:07 +0000 (UTC) Organization: Aioe.org NNTP Server Lines: 44 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <12-01-026@comp.compilers> References: <12-01-006@comp.compilers> NNTP-Posting-Host: news.iecc.com X-Trace: leila.iecc.com 1326691779 25727 64.57.183.58 (16 Jan 2012 05:29:39 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Mon, 16 Jan 2012 05:29:39 +0000 (UTC) Keywords: analysis, comment Posted-Date: 16 Jan 2012 00:29:39 EST X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: x330-a1.tempe.blueboxinc.net comp.compilers:425 Swati wrote: > We are doing an analysis on the usage of function pointers. > We have considered one such example as GCC which uses function pointers. You don't specify the language, maybe it matters, maybe not. Long before function pointers as we usually think of them, Fortran had the ability to pass a function name as an actual argument. That lets the called routine call the specified function, but there is no provision to store such a pointer for later use. This allows one to write minimization or integration routines (two popular uses) independent of the function being minimized or integrated. In a similar way, C's qsort() allows one to supply a compare routine which is called, but a function pointer isn't saved. On the other hand, the unix I/O system is built around a structure array, one element per major device type, containing function pointers. The pointers might even be compile-time constants. At run time, then, the I/O system uses a device code to index into the array, select the appropriate routine for the device, and call it. For many years, a C compiler was required to sysgen unix, even if the only need was to compile that table. > Can you suggest any other application which uses function pointers > extensively. I don't know about extensively. Both types of applications are much more convenient when done using function pointers. For the former case, you can instead substitute the required function into the source, compile it and debug it. (For open source routines.) For the second, you can instead use an indexed jump, such as switch/case, to a series of function calls. PL/I has ENTRY variables, which perform a similar function, but aren't called function pointers. -- glen [Any program written in an OO language that allows inheritance or overloading uses function pointers, since that's how they're implemented. -John]