Sztring tomb kerdes

Füzesi Arnold arno at freemail.hu
Wed Apr 7 09:55:30 CEST 2004


-Ha fuggvenyen belul vagy, akkor a static miatt hisztizni szokott.

Ez amúgy nem jó?

__flash const  char ResetInfoMsg1 [] [15] =
{ "POWER-ON Reset", "EXTERNAL Reset", "BROWN-OUT Reset", \
  "WDT Reset ", "JTAG Reset" };

Amit irtal az azert muxik, illetve nem, mert csak egy elemu a tomb, es meg
tudja hatarozni a hosszat.
Ha sokelemu "stringtombod" van annak nem tudja, meg kell adni a leghoszabb
hosszat.
(Vagy helyszuke esetén két külön tömb, egyikben a string ömlesztve, masikban
a pointerek amelyek a stringhatárokra mutatnak)

A masik amit irtal meg azert ir ki zagyvasagot szerintem, mert a printf
normal pointert var, es abba nem fer bele a __flash pointer.

printf_P-t hasznalj.

Amúgy nekem is ki van a sejhajom a tárolási osztályok kavarásával...
Kényelmetlen eléggé...

Arnold

----- Original Message ----- 
From: "Bali Zoltan" <eltexto at freemail.hu>
To: <elektro at tesla.hu>; <avr-hun at x-dsl.hu>
Sent: Tuesday, April 06, 2004 7:55 PM
Subject: Sztring tomb kerdes


Sziasztok !

Tudna valaki tanacsot adni hogy alábbi
sztring tömb definiálást hogy kéne megadni EW-nek
hogy emészteni tudja.

__flash const  char __flash *ResetInfoMsg1[] =
{ "POWER-ON Reset", "EXTERNAL Reset", "BROWN-OUT Reset", \
  "WDT Reset ", "JTAG Reset" };

Az aggregátum init lista tárolási osztályával van probléma, mert
ha leveszem a __flash-eket akkor jó.

Amúgy az egyszerübb esetben:

const __flash  char ResetInfoMsg[] = {"Muxik"};
Ha ezt akarom kiiratni pointeren kersztül :
{
    const char __flash  *MsgPtr;

    MsgPtr = ResetInfoMsg;
    printf("%s\n\r",MsgPtr);
}
Nem jelez hibát, de zagyvaságot ír ki.

Köszi

Üdv.   Zoli

Ui: Amiota AVR-ezek állandó problémát jelent a tárolási
osztály. Korábban más uC-nél nem voltak ezzel problémáim.









More information about the Elektro mailing list