This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

typedef union problem

I have a problem with typedef union as parameter for a function-call.

definition of the typedef

union uParameter {
  byte     bByte;   //  8 bit unsigned
  int16    iInt16;  // 16 bit signed
  int32    iInt32;  // 32 bit signed
};
typedef union uParameter USR_tu_Para;

prototype of a function that uses this typedef

void SetSomething(USR_tu_Para para);

The question is: how can I call the SetSomething-function with a constant parameter.

SetSomething(100);

This call creates a compiler error: #167: argument of type "int" is incompatible with parameter of type "USR_tu_Para"

I tried to cast the parameter witch (USR_tu_Para) or (USR_tu_Para.iInt16). But the compiler denied everything I tried.

Any ideas?

Parents
  • why a union: i agree at this example there is no need to use a union. But in my application it is a little bit more complicated. I use a pointer to access different functions. These functions imlicitely know if they need 8, 16 or 32 bits. I also misapplied that there are signed datatypes in the union too.

    The use of unions at this point simplifies the software a lot.

    I did not rumble through the benefit of transparent unions. But the crux of the matter will be that the software has to run under Visual C++ too. I don't think transparent unions will be supported there.

Reply
  • why a union: i agree at this example there is no need to use a union. But in my application it is a little bit more complicated. I use a pointer to access different functions. These functions imlicitely know if they need 8, 16 or 32 bits. I also misapplied that there are signed datatypes in the union too.

    The use of unions at this point simplifies the software a lot.

    I did not rumble through the benefit of transparent unions. But the crux of the matter will be that the software has to run under Visual C++ too. I don't think transparent unions will be supported there.

Children