home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / lang / c / 12676 < prev    next >
Encoding:
Internet Message Format  |  1992-08-23  |  1.2 KB

  1. Path: sparky!uunet!pmafire!news.dell.com!swrinde!sdd.hp.com!uakari.primate.wisc.edu!aplcen.apl.jhu.edu!anagld!sammy
  2. From: sammy@anagld.analytics.com (Sam Blackburn)
  3. Newsgroups: comp.lang.c
  4. Subject: Re: function pointers
  5. Message-ID: <1596@anagld.analytics.com>
  6. Date: 23 Aug 92 13:52:31 GMT
  7. References: <22AUG199219163464@mary.fordham.edu>
  8. Organization: Computer Sciences Corporation - Systems Engineering Division
  9. Lines: 30
  10.  
  11. sbhatia@mary.fordham.edu (SABU) writes:
  12.  
  13.  
  14. >if(func == NULL)
  15. >..
  16. >else
  17. >..
  18. >In essence I want to either pass a function or a null pointer to indicate
  19. >an alternate processing approach.
  20.  
  21. Sure, a pointer is a pointer is a pointer.  My suggestion would be to
  22. typedef your function and then cast NULL to prevent any compiler warnings.
  23.  
  24. typedef int (*MYFUNC)( int, int ); // MYFUNC is a pointer to a function that
  25.                                    // accepts two ints and returns an int
  26.  
  27. compute( x, function )
  28. int x;
  29. MYFUNC function;
  30. {
  31.    if ( function == (MYFUNC) NULL )
  32.    {
  33.       return( x );
  34.    }
  35.  
  36.    return( (*function)( x, 14 ) );
  37. }
  38.  
  39. Some compilers allow you to call function( x, 14 ) directly while others
  40. require you to dereference the pointer first.
  41.