home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / lang / c / 16140 < prev    next >
Encoding:
Text File  |  1992-11-08  |  1.3 KB  |  54 lines

  1. Path: sparky!uunet!stanford.edu!agate!usenet.ins.cwru.edu!po.CWRU.Edu!wct
  2. From: wct@po.CWRU.Edu (William C. Thompson)
  3. Newsgroups: comp.lang.c
  4. Subject: Macros
  5. Date: 7 Nov 1992 07:41:56 GMT
  6. Organization: Case Western Reserve University, Cleveland, OH (USA)
  7. Lines: 42
  8. Message-ID: <1dfs04INNg3e@usenet.INS.CWRU.Edu>
  9. Reply-To: wct@po.CWRU.Edu (William C. Thompson)
  10. NNTP-Posting-Host: slc5.ins.cwru.edu
  11.  
  12.  
  13. I'm trying to write a macro that allocates memory for Rows double *,
  14. and then allocating for Cols double.  Basically, A is a double **,
  15. which points to a row of double *, which point to a buffer of doubles.
  16. A[i][j] is then the jth element in the ith row.  But I'm having
  17. trouble with this macro business.  I don't want to write a function
  18. to do it.
  19.  
  20. ALL.H
  21. -----
  22. #define malloc2d(A,rows,cols); (
  23. {
  24.   int i;
  25.  
  26.   if (((A)=(double **)malloc(sizeof(double *)*(rows)))==NULL)
  27.     printf("Allocation error!\n");
  28.   for (i=0; i<(cols); i++)
  29.     if (((A)[i]=(double *)malloc(sizeof(double)*(cols)))==NULL)
  30.      printf("Allocation error!\n");
  31. }
  32. )
  33.  
  34. TEST PROGRAM
  35. ------------
  36. #include <stdio.h>
  37. #include <all.h>
  38.  
  39. double **A;
  40. int i,j;
  41.  
  42. main()
  43. {
  44.   malloc2d(A,50,50);
  45.   for (i=0; i<50; i++)
  46.     for (j=0; j<50; j++)
  47.       A[i][j]=1.0/(i+j+1.0);
  48.   return 0;
  49. }
  50.  
  51. It doesn't compile, though.  What gives?  E-mail responses, please...
  52. -- 
  53. "What do you mean Star Trek isn't real!?" - anonymous
  54.