Autor Tema: Const del CCS C  (Leído 2495 veces)

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

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Const del CCS C
« en: 27 de Marzo de 2008, 02:49:46 »
Estoy usando el CCS C 4.023 y leyendo su help me econtre con que const puede ir antes o despues algun identificador (int, byte, long...).

Mi duda es que cual es el lugar (antes o despues) en donde debe ir esto? Ya que en el help dicen que cuando va despues se pone en la rom y cuando va antes se toma como identificador, pero despues dicen lo contraria y..   :x No se supone que solo debe de haber una sola forma?

Probando, cuando lo pongo despues el ROM aumento, y aveces, tambien la RAM :?
Cuando lo pongo antes no pasa NADA. Ni en la ROM ni en la RAM. Como deberia tomar esto ultimo? Como un #DEFINE ?

Estoy algo confundido a este const del  CCS  :?

Gracias.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Const del CCS C
« Respuesta #1 en: 27 de Marzo de 2008, 03:39:16 »
He mirado la ayuda del CCS respecto del CONST y no veo que explique esas diferencias entre ponerlo delante o detrás. ¿Puedes pegar aquí lo que has leído?

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Const del CCS C
« Respuesta #2 en: 27 de Marzo de 2008, 09:00:21 »
Esto es lo que pone en la versión 4.032:

The compiler has support for placing any data structure into the device ROM as a constant read-only element.  Since the ROM and RAM data paths are separate in the PIC®, there are restrictions on how the data is accessed.  For example, to place a 10 element BYTE array in ROM use:

BYTE CONST TABLE [10]= {9,8,7,6,5,4,3,2,1,0};

and to access the table use:

x = TABLE ;

OR

x = TABLE [5];

BUT NOT

ptr = &TABLE ;

In this case, a pointer to the table cannot be constructed.

Similar constructs using CONST may be used with any data type including structures, longs and floats.

Note that in the implementation of the above table, a function call is made when a table is accessed with a subscript that cannot be evaluated at compile time.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Const del CCS C
« Respuesta #3 en: 27 de Marzo de 2008, 09:11:58 »
Sí, eso es lo que yo he visto en la 4.049, por eso le decía a Jeremy que no veo diferencias entre poner el const antes o después.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Const del CCS C
« Respuesta #4 en: 27 de Marzo de 2008, 10:27:52 »
Efectivamente Manolo no hay diferencia. El termino "constante" como todos sabes significa "no variable" y la forma de hacerlo es grabándolo en la ROM por el contrario si no ponemos "constante" se entiende un término variable he irá implementado en la RAM.

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado jeremylf

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1341
Re: Const del CCS C
« Respuesta #5 en: 27 de Marzo de 2008, 14:04:42 »
Lo decia por los ejemplos que hay, algunos van adelante y otros detras.

Lo entenderia si no ubiera diferencia. Pero cuando compilo, y estando el const despues del identificador, SI aumenta la ROM (y junto aveces con la RAM :S). Pero cuando esta antes, por mas variables que cree la ROM ni RAM aumenta y lo peor es que no bota ningun error el compilador. Como deberia tomar esto ultimo? Como un #define?

Gracias.