eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaC - łańcuchy tekstowe definiowane w parametrach funkcji › Re: C - ?a?cuchy tekstowe definiowane w parametrach funkcji
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erj
    e.net!feeder.erje.net!news2.arglkargh.de!news.mixmin.net!aioe.org!NZ87pNe1TKxND
    knVl4tZhw.user.46.165.242.91.POSTED!not-for-mail
    From: a...@m...uni.wroc.pl
    Newsgroups: pl.misc.elektronika
    Subject: Re: C - ?a?cuchy tekstowe definiowane w parametrach funkcji
    Date: Sat, 27 Aug 2022 18:30:03 -0000 (UTC)
    Organization: Aioe.org NNTP Server
    Message-ID: <tednrb$15a$1@gioia.aioe.org>
    References: <6308cdf1$0$6193$65785112@news.neostrada.pl>
    <4...@g...com>
    <63091035$0$560$65785112@news.neostrada.pl>
    Injection-Info: gioia.aioe.org; logging-data="1194";
    posting-host="NZ87pNe1TKxNDknVl4tZhw.user.gioia.aioe.org";
    mail-complaints-to="a...@a...org";
    User-Agent: tin/2.4.5-20201224 ("Glen Albyn") (Linux/5.10.0-9-amd64 (x86_64))
    X-Notice: Filtered by postfilter v. 0.9.2
    Cancel-Lock: sha1:57U25n5GS/6j1Gd/2hwEYz3ZpiQ=
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:773978
    [ ukryj nagłówki ]

    Atlantis <m...@w...pl> wrote:
    > On 26.08.2022 16:40, Dawid Rutkowski wrote:
    >
    > > W AVR - i pewnie w innych harvardach - jest mo?liwo?? zrobienia tak,
    > > ?e nie b?dzie u?ywany RAM - send(PSTR("tekscik z ROMu"));
    > > a jako argument leci wska?nik - ale do flasha.
    >
    >
    > Tak to by?o robione na cz??ci o?miobitowych mikrokontroler?w, takich jak
    > PIC16/PIC18 albo w?a?nie AVR (i w zwi?zku z tym r?wnie? wi?kszo?? p?ytek
    > Arduino). ?eby unikn?? kopiowania do RAM-u, trzeba by?o deklarowa?
    > ?a?cuchy tekstowe za pomoc? specjalnych makrodefinicji. Istnia?y te?
    > specjalne wersje funkcji do operacji na ?a?cuch, przygotowane z my?l? o
    > nich.
    >
    > W przypadku nowoczesnych uk?ad?w 32bitowych (STM32, PIC32,
    > ESP8266/ESP36) nie ma ju? takiej potrzeby, bo zar?wno flash jak i RAM
    > stanowi? cz??? tej samej przestrzeni adresowej i mo?na si? do nich
    > odwo?ywa? za pomoc? tych samych wska?nik?w, a ?a?cuchy zdefiniowane jako
    > const char* trafiaj? do flasha.
    > Oczywi?cie trzeba uwa?a? na to co si? robi, bo np. pr?ba zapisu pod
    > adres we flashu spowoduje rzucenie wyj?tku.
    >
    > Moje pytanie dotyczy?o czego? innego - chcia?em si? upewni?, czy
    > faktycznie ?a?cuch zdeklarowany jako argument funkcji (a nie jawnie,
    > jako globalna sta?a z kwalifikatorem const) zawsze b?dzie zapisany we
    > flashu. Wyobra?my sobie np. hipotetyczn? sytuacj?:
    >
    > Send("Lights on");
    > Send("Lightf off");
    >
    > Czy nie istnieje np. ryzyko, ?e kompilator spr?buje to niejawnie
    > zoptymalizowa? i zdefiniuje sobie we flashy ?a?cuchu "Lights ", "on"
    > oraz "off", a potem b?dzie tworzy? ich kombinacje na stosie, przed
    > przekazaniem w argumencie funkcji?

    Po co sie martwisz? Kompilator ma to zrobic tak zeby lancuch znakow
    zachowywal sie jak stala. W szczegolnosci ma istniec po tym jak
    zakonczy sie wykonanie funkcji. Teoretycznie mozna sobie wyobrazic
    jakis skomplikowany system ktory przydziela dynamicznie pamiec
    a zwalnia ja gdy nie jest potrzebna. Z tego co wiem zaden
    kompilator nie robi czegosc takiego. Robia co innego, jak
    masz np.

    "turn lighths on"

    i

    "lights on"

    kompliator moze jako drugi lancuch uzyc koncowa czesc pierwszego.
    Kompilator moze zastapic _uzycie_ lancucha znakow przez sztuczki
    w podobnym stylu do tego co sobie wyobrazales. Ale te sztuczki
    dzialaja gdy w miejcu uzycia lancuch jest znany.

    --
    Waldek Hebisch

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: