passing structures

Andrew Walduck andrew at motto.UUCP
Thu Oct 11 03:25:56 AEST 1990


okay folks here goes...

In the new ANSI standard, we can now pass (and return) a structure by
value. Like so...(fragment follows)

-----------------------------------------------------------------------
#include <stdio.h>

typedef struct complex {
                         int real;
        		 int imag; 
                       } complex;

complex add(complex, complex); /* function prototype for complex add */

int main(void)
{
  complex result, a, b;

  a.real = 5; a.imag = 6; /* 5+6i */
  b.real = 8; b.imag = 3; /* 8+3i */

  result = add(a,b); /* should be 13+9i */

  printf("result : %i+%ii\n", result.real, result.imag);
}

complex add(complex a, complex b)
{
  complex result;

  result.real = a.real + b.real;
  result.imag = a.imag + b.imag;
  
  return result;
}
----------------------------------------------------------------------- 
Now, that should work right?!!

Now, here's the problem...what if I wanted to pass a constant structure
to add! For example I wanted to add 5+8i to a:

The call to add would look like this??

result = add(a,{5,8});

But this isn't supported by ANSII! There's no way to pass a structure
as a parameter! It should be do-able, the prototype exists, so the 
types can be punned appropriately...any idea why it wasn't? No prior-art?

Any idea how I can suggest this to the committee?

Thanx
Andrew Walduck
 ______________________________________________________________________
|andrew at motto.UUCP | I wasn't aware that Ada was useful - Henry Spencer|



More information about the Comp.lang.c mailing list