eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaARM7 - nie działa wołanie metod wirtualnych. › Re: ARM7 - nie działa wołanie metod wirtualnych.
  • Path: news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.astercity.n
    et!news.aster.pl!not-for-mail
    Newsgroups: pl.misc.elektronika
    Followup-To: pl.misc.elektronika
    From: Krzysztof Rudnik <r...@k...net.pl>
    Subject: Re: ARM7 - nie działa wołanie metod wirtualnych.
    Date: Sun, 08 Feb 2009 20:53:46 +0100
    References: <gmmq97$gsi$1@atlantis.news.neostrada.pl>
    User-Agent: KNode/0.99.01
    MIME-Version: 1.0
    Content-Type: text/plain; charset=""
    Content-Transfer-Encoding: 8Bit
    Lines: 43
    Message-ID: <498f3853$0$29423$f69f905@mamut2.aster.pl>
    NNTP-Posting-Date: 08 Feb 2009 19:53:55 GMT
    NNTP-Posting-Host: 10.70.23.98
    X-Trace: 1234122835 mamut2.aster.pl 29423 10.70.23.98:1079
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:556315
    [ ukryj nagłówki ]

    Sebastian Bialy wrote:

    > Witam.
    >
    > Takie coś:
    >
    > struct X
    > {
    > virtual void run() { do_something(); };
    > void start() { run(); );
    > }
    >
    > kod glowny:
    >
    > X x;
    >
    > x.run(); - dziala
    > x.start(); - nie dziala
    >
    > Anzalizujac kod krok po kroku w OpenOCD widze, Ĺźe wolanie run() z
    > wnetrza start() prowadzi prosto pod adres NULL. Tak jak gdyby tablica
    > wirtualna była uszkodzona. Z drugiej strony jednak zawołanie wprost

    A te zmienne sa statyczne czy automatyczne?

    > run(); działa. Wygląda więc na to że nie działa wołanie metod
    > wirtualnych z innych metod.

    Masz obiekt kompletny, wiec wywolanie x.run() realizowane jest bezposrednio, bez
    'wirtualnosci'. Wywolanie jest wirtualne (poprzez tablice) gdy wywolujesz metode ze
    wskaznika lub referencji. Wewnatrz start() masz wskaznik this.

    >
    > arm-elf-g++ w wersji 3.4.3. RTTI włączone. Cpu AT91SAM7S.
    >
    > Gdzie szukać przyczyny? Może ktoś już się z tym spotkał? Google pytane
    > pod róznymi hasłami kręci się w okolicy EABI ale żadnych konkretów. Mogę
    > podać wszystko włacznie z kawałkami asm, sam niestety słabo znam asm
    > arm7 żeby zabrać się za analizę.

    Jesli to sa zmienne statyczne to podejrzewalbym linkowanie i inicjalizacje.
    Kazdy plik .cpp zawiera wygenerowana przez kompilator funkcje inicjalizujaca obiekty
    globalne (wolajaca konstruktory).

    Krzysiek Rudnik

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: