return two variables from a function

Status
Not open for further replies.

kappa_am

Full Member level 6
Joined
Jul 16, 2012
Messages
331
Helped
19
Reputation
38
Reaction score
19
Trophy points
1,298
Location
Vancouver
Activity points
3,859
hi all;
I am working with Mikroc, and I like to return two values from a function. I would be grateful if you guide me how to do this work.

Thank you.
 

First way - use a pointer as a parameters:
Code:
void main (void)
{
  char x,y;
  GetXY (&x, &y);
}

void GetXY (char * x, char * y)
{
 * x = 1;
 * y = 2;
}
Second way - return the pointer as the result:
Code:
typedef struct
{
 char x;
 char y;
} XY_StructTypeDef;



void main (void)
{
 XY_StructTypeDef * XY;
 XY = GetXY();
 ...
}

XY_StructTypeDef * GetXY (void)
{
 static XY_StructnTypeDef XY;
 XY.x = 1;
 XY.y = 2;
 return & XY;
}

Good rule is to use a function to return the error code:
Code:
typedef enum {  Success = 0, Error } Error_TypeDef;
Error_TypeDef XdivY (char x, char y, char * res);

void main (void)
{
  Error_TypeDef ErrorCode;
  char x, y, x_div_y;
  ErrorCode = XdivY (x, y, &x_div_y);
}

Error_TypeDef XdivY (char x, char y, char * res)
{
  if (y == 0) return Error;
  * res = x / y;
  return Success;
}
 

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…