ATNEL tech-forum https://forum.atnel.pl/ |
|
Wskaźnik i funkcja w strukturze https://forum.atnel.pl/topic22979.html |
Strona 1 z 1 |
Autor: | abel11 [ 31 mar 2020, o 08:59 ] |
Tytuł: | Wskaźnik i funkcja w strukturze |
Hej wszystkim. Piszę program, w którym te same funkcje wykonują się wiele razy dla innych danych wejściowych, więc chce go nieco uprościć, wstawiając do struktur wskaźniki na funkcje (ala metody) oraz tworząc coś na kształt instancji. Tu pojawił się problem ponieważ z tego co wiem C nie wspiera tego typu operacji i trzeba to robić na piechotę. To co chce osiągnąć wyglądało by jak kod poniżej, gdyby nie to, że nie mogę wykorzystać typu Buffer_t jako argument wskaźnika na funkcję bool (*ReadFilteredSample)(signed _Fract* , Buffer_t*) w deklaracji struktury ponieważ to definicja Buffer_t więc kompilator nie będzie wiedział co tam wstawić. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Alternatywą jest przerobienie funkcji bool ReadFilteredSample(signed _Fract* , Buffer_t*) na bool ReadFilteredSample(signed _Fract* , void*) i rzutowanie wewnątrz funkcji wskaźnika void* na wewnętrzną zmienną typu Buffer_t*. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Funkcja ReadFilteredSample wyglądał by tak: język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Moje pytanie brzmi czy da się to zrobić nieco prościej bez wskaźnika typu void i rzutowania różnych typów na siebie - wydaje mi się że jest to mało bezpieczne rozwiązanie. Z góry dzięki za wszelkie rady! |
Autor: | fofex [ 31 mar 2020, o 09:17 ] |
Tytuł: | Re: Wskaźnik i funkcja w strukturze |
abel11 napisał(a): czy da się to zrobić nieco prościej bez wskaźnika typu void i rzutowania różnych typów na siebie Deklarujesz typ przed jego definicją: |
Autor: | abel11 [ 31 mar 2020, o 09:41 ] |
Tytuł: | Re: Wskaźnik i funkcja w strukturze |
Dzięki za radę. Niestety tą metodą otrzymam konflikt typów, przez słowo kluczowe typedef ta opcja nie wchodziła w gre wcześniej. Być może coś mi umknęło i da się to obejść w ten sposób tylko jeszcze nie wiem jak. język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. edit: Nie dodałem w pierwszym poście informacji o C w wersji C99 |
Autor: | fofex [ 31 mar 2020, o 09:51 ] |
Tytuł: | Re: Wskaźnik i funkcja w strukturze |
język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. lub |
Autor: | abel11 [ 3 kwi 2020, o 07:38 ] |
Tytuł: | Re: Wskaźnik i funkcja w strukturze |
Otrzymałem odpowiedź w sprawie hex error, umieszczam ją tu dla porządku. Środowisko: MPLAB X ver 5.30, kompilator XC16 ver 1.50 Problem: MPLAB X ver 5.30 po skopiowaniu projektu może generować błąd niewykonalnego/nieistniejącego hex'a. Rozwiązanie: Zmusić MPLAB X do ponownego wygenerowania nbproject/Makefile-default.mk, np. poprzez usunięcie go lub przełączenie kompilatora na inną wersję (można wrócić do najnowszej po przeładowaniu projektu). |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |