Autor Tema: Asignacion de valores a estructuras  (Leído 3942 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Asignacion de valores a estructuras
« en: 25 de Abril de 2009, 15:53:11 »
Hola.

Mi duda corresponde a asignar los valores a una estructura, pero quiero hacerlo a todos los elementos de la estructura en una sola linea de codigo.

Por ejemplo, supongamos la estructura:

struct BytesEjemplo
{
 int8 byte1;
 int8 byte2;
 int1 Flag1;
} Ejemplo;

Se que en el main uno puede asignar el valor de la manera: Ejemplo.byte1 = 5; Si quisiera que la estructura Ejemplo tenga los valores {5,5,0} como hago para asignarlo en una sola linea de codigo? si se puede hacer? o me toca asignar el valor elemento por elemento?

Saludos
El papel lo aguanta todo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Asignacion de valores a estructuras
« Respuesta #1 en: 25 de Abril de 2009, 16:35:06 »
Podría ser con una función de una sola línea de código:

Código: [Seleccionar]
struct BytesEjemplo
{
 int8 byte1;
 int8 byte2;
 int1 Flag1;
} Ejemplo;

...

void EscribeStruct(BytesEjemplo *estru, int8 b1, int8 b2, int1 f)
{
estru->byte1=b1;
estru->byte2=b2;
estru->Flag1=f;
}

//Y se llamaría así
EscribeStruct( &Ejemplo, 0x22, 0x34, true);

Lo acabo de escribir, talvez tenga errores de sintaxis, pero al menos te dejo la idea de cómo podrías llevarlo a cabo. Si no te sugieren algo mejor, pruébalo y nos avisas  :P
« Última modificación: 25 de Abril de 2009, 16:43:27 por migsantiago »

Desconectado cerebro

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
Re: Asignacion de valores a estructuras
« Respuesta #2 en: 25 de Abril de 2009, 16:54:56 »
 :( , no permite sobrecargar operadores CCS?  :(
LAS MALVINAS SON ARGENTINAS!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Asignacion de valores a estructuras
« Respuesta #3 en: 25 de Abril de 2009, 17:28:30 »
No, porque no es C++, no es orientado a objetos.

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: Asignacion de valores a estructuras
« Respuesta #4 en: 25 de Abril de 2009, 18:30:48 »
Creo que se puede realizar de esta manera... Simplemente pones los valores entre corchetes con la misma organización que la estructura. Estoy seguro de que esto funciona si asignas un valor al dato cuando lo declaras, pero no se si se puede seguir haciendo en cualquier otro punto del programa.
Yo uso el MPLAB C30, no se si sera igual en el CCS...

Código: C
  1. struct BytesEjemplo
  2. {
  3.  int8 byte1;
  4.  int8 byte2;
  5.  int1 Flag1;
  6. }Ejemplo;
  7. ....
  8. struct BytesEjemplo strct1 = {1,2,3};
  9. ....
  10. strct1 = {4,5,6};
  11. ....


Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Asignacion de valores a estructuras
« Respuesta #5 en: 26 de Abril de 2009, 01:52:21 »
Hola.

migsantiago: Voy a intentarlo asi, habia pensado en una funcion, pero llegue a suponer que habia una forma mas facil de hacerlo.
jgpeiro: Fue lo primero que intente pero el compilador marca error de sintaxis -CCS tiene sus cosas-

Saludos
El papel lo aguanta todo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Asignacion de valores a estructuras
« Respuesta #6 en: 26 de Abril de 2009, 12:47:52 »
jgpeiro: Fue lo primero que intente pero el compilador marca error de sintaxis -CCS tiene sus cosas-

Saludos

Lo que sugiere Jgpeiro no se puede hacer en tiempo de ejecución, solo al momento de declarar la variable. Eso pasa en todos los compiladores de C, no solo en CCS.

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Asignacion de valores a estructuras
« Respuesta #7 en: 27 de Abril de 2009, 15:55:28 »
aahhh

Ok. Gracias

Saludos
El papel lo aguanta todo

Desconectado jgpeiro06

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 276
Re: Asignacion de valores a estructuras
« Respuesta #8 en: 28 de Abril de 2009, 04:46:50 »
Citar
Lo que sugiere Jgpeiro no se puede hacer.
Oye, que si se puede hacer!! Bueno, no exacatamente como indicaba en mi post anterior, pero que si se puede asignar el valor a todos los miembros de la estructura en cualquier punto del programa, por lo menos con el MPLAB C30.

Lo único que hay que hacer es el casting"(struct BytesEjemplo)" para que el compilador sepa de que tipo son los datos.
Código: C
  1. struct BytesEjemplo
  2. {
  3.         int byte1;
  4.         int byte2;
  5.         int Flag1;
  6. };
  7. //...
  8. struct BytesEjemplo strct1 = {1,2,3};
  9. //...
  10. strct1 = (struct BytesEjemplo){4,5,6};
  11. //...




Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Asignacion de valores a estructuras
« Respuesta #9 en: 28 de Abril de 2009, 05:17:25 »
Lo único que hay que hacer es el casting"(struct BytesEjemplo)" para que el compilador sepa de que tipo son los datos.
Código: C
  1. struct BytesEjemplo
  2. {
  3.         int byte1;
  4.         int byte2;
  5.         int Flag1;
  6. };
  7. //...
  8. struct BytesEjemplo strct1 = {1,2,3};
  9. //...
  10. strct1 = (struct BytesEjemplo){4,5,6};
  11. //...

Guau, me acabas de alegrar la mañana.  :mrgreen:
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Asignacion de valores a estructuras
« Respuesta #10 en: 28 de Abril de 2009, 12:47:15 »
Vaya, lo desconocía. Gracias por la corrección.  :mrgreen:

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Asignacion de valores a estructuras
« Respuesta #11 en: 28 de Abril de 2009, 13:11:44 »
El CC$ no deja .... marca error. ... Lastima

saludos
El papel lo aguanta todo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Asignacion de valores a estructuras
« Respuesta #12 en: 28 de Abril de 2009, 13:24:56 »
El CC$ no deja .... marca error. ... Lastima

¿No te dejó hacer el casting que menciona Jgpeiro o correr la función que cambia los int8?

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Asignacion de valores a estructuras
« Respuesta #13 en: 28 de Abril de 2009, 22:30:31 »
No dejo hacer el casting:

Código: C#
  1. strct1 = (struct BytesEjemplo){4,5,6};

CC$ version 4.057, a ti te funciono mig?

Saludos
El papel lo aguanta todo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Asignacion de valores a estructuras
« Respuesta #14 en: 29 de Abril de 2009, 11:13:56 »
mmhh no lo estoy probando, pero jgpeiro dice que le funciona en C30.


 

anything