Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 6th, 2012  |  syntax: None  |  size: 0.79 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. How to get size of different kinds of types in the same function using C?
  2. int getMoreSpace(void **pnt, int size, int add) {
  3.     xxxxxx *tmp; /* a pointer to the same as pnt */
  4.     if (tmp = realloc(pnt, (size+add)*sizeof(xxxxxx))) { /* get size of what pnt points to */
  5.         *pnt=tmp;
  6.         return 1;
  7.     else return 0;
  8. }
  9.        
  10. #define getMoreSpace(P, SZ, ADD) getMoreSpaceFunc(&(P), sizeof(*(P)), (SZ), (ADD))
  11.  
  12. int getMoreSpace(void **pnt, size_t elem_size, int size, int add) {
  13.     *pnt = ...
  14. }
  15.        
  16. int getMoreSpace(void **pnt, int size, int add, size_t eltSize)
  17. {    
  18.   void *tmp;
  19.   if (tmp = realloc(pnt, (size+add)*eltSize))
  20.   {
  21.     *pnt=tmp;
  22.     return 1;
  23.   }
  24.   else
  25.     return 0;
  26. }
  27. ...
  28.  
  29. int *p = malloc(100 * sizeof *p);
  30. ...
  31. if (!getMoreSpace(&p, 100, 20, sizeof *p))
  32. {
  33.   // panic
  34. }