home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / lang / c / 11433 < prev    next >
Encoding:
Text File  |  1992-07-22  |  1.3 KB  |  36 lines

  1. Newsgroups: comp.lang.c
  2. Path: sparky!uunet!darwin.sura.net!wupost!cs.utexas.edu!sun-barr!ames!agate!linus!linus.mitre.org!el_padre.mitre.org!bdickens
  3. From: bdickens@el_padre.mitre.org (Brian Dickens)
  4. Subject: Variable argument question
  5. Message-ID: <1992Jul22.135609.17393@linus.mitre.org>
  6. Sender: news@linus.mitre.org (News Service)
  7. Nntp-Posting-Host: el_padre.mitre.org
  8. Organization: The MITRE Corporation, Bedford, MA 01730
  9. Date: Wed, 22 Jul 1992 13:56:09 GMT
  10. Lines: 24
  11.  
  12. I am trying to write code that calls a function whose parameters it knows, but are different every time.
  13. The data type and size information is stored in an array.  To put it perhaps more clearly:
  14.  
  15. #define INT 0
  16. #define FLOAT 1
  17. #define CHAR 2
  18.  
  19. char *dataptr;
  20. int parameters[10] = { INT, 1, FLOAT, 2, FLOAT, 1, CHAR, 10, INT, 1 };
  21.  
  22. From this, I want to generate:
  23.  
  24. functioncall( (int*)(dataptr), (float*)(dataptr+=sizeof(int)), 
  25.                          (float*)(dataptr+=sizeof(float[2])), (char*)(dataptr+=sizeof(float), 
  26.                          (int*)(dataptr+=sizeof(char[10]));
  27.  
  28. The array changes, though.  With frequency.  And the function being called changes as well...
  29.  
  30. Is there any way to do this with argument lists/etc?  I am using standard C.  Thanks in advance for any help.
  31.  
  32. <<<?>>> bdickens@elara.mitre.org <<<!>>>
  33.  
  34. Hope this makes sense...
  35.  
  36.