Rozumiem, że ten zapis Ten zapis wygeneruje element o typie uint8_t i zwróci jego adres. Po co chcesz coś optymalizować? Sprawdziłeś wygenerowany kod asemblerowy? Bo po pierwsze narzut może być marginalny i bez znaczenia, szczególnie w przypadku obsługi wolnego interfejsu I2C, gdzie zapewne dalej...
Kod który cytuję, nie znaczy to, ze go pochwalam Dodano po 1 W ogóle to chyba użycie samej wartości liczbowej pozyskanej ze wskaźnika jest niezdefinowanym zachowaniem albo przynajmniej specyficzne dla platformy. Głos rozsądku. Myślę że my tu pracowicie rozwiązujemy jaki Problem XY. Różne...
Pozwolę sobie upewnić się. funcxxx(&s1.cde3); Funkcji zostanie przekazany adres od razu do pola cde3? I funkcja zadeklarowana jako void funcxxx(uint8_t *costam) Będzie operować na s1.cde3? Jeśli oczywiście dane pole ma ten sam typ? I dalej w funkcji jak z normalnym wskaźnikiem postępujemy? Rozumiem,...
Nie wiem czy dobrze rozumiem do czego dążysz ale możesz napisać coś takiego int funkcja(char *wsk) { *(wsk+3) = 2; return (int)*(wsk+3); } wywołanie char data Nie, nie o to mi chodziło. Tutaj odwołujesz się tylko do 4 elementu tablicy. Dodano po 1 Czyli to: Tym...
Są to niskie wartości adresy np. 6F0 to jest akurat adres od przeglądarki. Nie jest to adres tylko PID (process identifier). Prawdopodobnie w każdym systemie operacyjnym ogólnego przeznaczenia proces ma swoją pamięć wirtualną. Dostęp do niej (w normalnych warunkach) jest możliwy tylko dzięki systemowym...
Problem jest tutaj: [syntax=c]void RunNeuralNet_Classification () { ComputeFeedForwardSignals((double*)input... 100,0); ComputeFeedForwardSignals((double*)hidde... 23,1); } [/syntax] W wywołaniu funkcji...
Z dodatkowych rzeczy, które mógłbyś poprawić to: - stosowanie wielkich liter dla makr for . Mamy 21 wiek i stosujemy co najmniej "-std=c99", więc nie ma potrzeby deklarowania wszystkich zmiennych na początku funkcji enum i stosować zmienne i argumenty tego typu, np: enum class , który wprowadza...
Zrób może tak: 1.Ustawiasz rzutowanie perspektywiczne i rysujesz swoją scenę, obracasz itp. nie rysujesz kursora. 2. Zmieniasz rzutowanie z perspektywicznego na ortograficzne, w OGl było z tego co pamiętam glOrtho2d- wtedy masz tylko współrzędne X i Y. 3. Pobierasz pozycję myszy, która jest pozycją...
Oj będzie wskaźnikiem, ale ... uint8_t* s; : wyrażenie (uint8_t*)*s spowoduje, że : wartość wskazywana przez s zostanie przekonwertowana na wskaźnik do zmiennej typu uint8_t - i co tu się stanie to Bóg jeden wiedzieć raczy, ale będzie to niespodzianka raczej. O ile kompilator tego nie oprotestuje. ...
To już łapie. Teraz przy "rzutowaniu" bo nie wiem jak to nazwać fachowo[syntax=asm]MOV AX, WORD PTR Byte4 ; <--- po wykonaniu AX = 0x0102 [/syntax] ma taką wartość bo wczytuje Byte4 ale i zahacza Byte1 bo są obie wielkości bajt. Oki lecz rodzi się kolejne pytanie. To znaczy że wskaźnik...
Dlaczego nie działa rzutowanie tego typu ? A mógłbyś wyjaśnić, co znaczy nie działa? Bo zazwyczaj działa... [edit] Musisz tylko pamiętać, że kompilator jest uprawniony do wyrównywania ułożenia pól w strukturach w zależności od wymagań architektury procesora. Jest prawdopodobne, że pole wskaźnika...
Po pierwsze, skoro iteracja jest od 0 do 50 , to po jakiego grzyba deklarujesz zmienną i jako int (czyli typ dwubajtowy ze znakiem). ???? Do tego deklarujesz że wskaźnik *wsk_ramki ma typ char Następnie robisz operację dodawania na wskaźniku i to jeszcze na dwóch tak różnych typach,...
Może coś takiego będzie działać, sprawdziłem tylko, że się kompiluje: // definicja tablicy wskaźników do funkcji void (*f_Function_table[])... PROGMEM = { f_1, ... f_5 } //----------- // wywołanie void (*f)(); // pośredni...
To rzutowanie to taka informacja, że: "to co odczytałeś spod podanego adresu jest wkaźnikiem do funkcji z takim a takim argumentem i zwracającym to i to" Dobrze? Generalnie tak. Rzutowanie w C to w zasadzie informacja dla kompilatora, że programista wie, co robi. :wink: Z tym typedef to tak: ...
C nie ma dynamicznych typów danych (tzn. normalnie typ danej jest ustalony w czasie kompilacji), co powoduje, że do takich zastosowań się trochę słabo nadaje. W każdym razie, ze strukturami chodzi o to, że jeżeli masz funkcje (dynamicznie zmieniające się, co uzasadnia stosowanie wskaźników) o różnych...
nazwa typu "kłamie", jak chcesz znak to mów znak (zastanów się czy signed, czy unsigned, żeby po zmianie opcji kompilatora nie wyleciało w powietrze.) A jak liczbę (Intxxxx), to dlaczego inicjujesz literkami? [syntax=c]Int8* WskaźnikNaDupe = Text_ABCDE[3];[/syntax] Nie myślałeś o czymś takim? Po...
Próbowałeś wyświetlić adres przekazując wskaźnik na char do cout, ale cout interpretuje zawsze wskaźnik do char jako tekst i wyświetla tekst. Właśnie dlatego trzeba zrobić rzutowanie do (void*), żeby "przekonać" kompilator, że chcemy widzieć wartość wskaźnika. To powinno wyjasnić wszystko: [syntax=c]for(int...
O tyle o ile. Jeśli wskaźnik ma być użyty do danych o różnych typach można użyć wskaźnika na void [syntax=c]struct { void *ptr; } Struktura;[/syntax] Do wskaźnika void można przypisać wartość wskaźnika dowolnego typu. [syntax=c]int zmienna; Struktura.ptr = &zmienna;[/syntax] Dostęp do zmiennej...
Czyli zostaje tylko taki potworek Tak właśnie powinno być jak napisałeś. Poza tym czemu "potworek"? Powiedziałbym, że to eleganckie wyrażenie. Widać ładnie, jak poszczególne typy kolejno "maszerują". Praktyka programowania wymusza często bardziej skomplikowane twory. Trochę jeszcze skoryguję to,...
Z rzutowaniem wskaźnika na strukturę na inny wskaźnik jest problem gdy struktura ma elementy różnych typów(a co za tym idzie rozmiarów). Kompilatory różnie zarządzają rozmiarem struktury.Np taka struktura: struct struktura{ int A; char B; int C; }; W programie skompilowanym pod...
Witam, class test { public: struct a { struct b *wskaznik_b; int dana_A; }; struct b { struct a *wskaznik_a; int dana_B; }; test(); virtual ~test(); ); //----------...
Ok, nie wiem już ile razy mam powtarzać, że to do niczego mi nie potrzebne - po prostu w pewnym momencie nie znając dokładnie tych zasad utworzyłem wskaźnik na literał .... i spotkałem się z dziwnym (ale dla mnie zachowaniem) Teraz dopiero z tej dyskusji wyniknęło skąd się to bierze i chyba każdy...
Można użyć wskaźnika na void do przenoszenia wskaźnika na funkcję, wszak oba zajmują tyle samo. Można wskaźniki tego typu między sobą przepisywać bez potrzeby rzutowania. Pod tym względem nie trzeba zwracać wskaźnika na funkcję. Jakkolwiek, nie dało by się zrobić (dziwnie wyglądającego - swoją drogą)...
to już dawno zrobiłem, tylko rzutowanie prowadzi do takiego ostrzeżenia: warning: cast to pointer from integer of different size a tego już obejść nie potrafię.
Dla makr *_far wymagany jest typ uint32_t. Wskaźnik na AVR jest typem zaledwie 16-bitowym. Stąd też jeśli przekazujesz jako argument 16-bitowy wskaźnik nie ma sensu używać makr z sufiksem _far, gdzie najstarsze 16-bitów będzie miało w efekcie zawsze 0. Możesz pozbyć się ostrzeżenia korygując użyte makro,...
objaw jaknajbardziej prawidlowy. zapomniales o tym, ze jak masz komorki o adresach: 00 01 02 03 04 05 06 07 to na raz odczytac mozesz tylko pod takim warunkiem: - 1 komorke zawsze - 2 komorki na raz (16b) tylko jesli adres jest podzielny przez 2 - 4 komorki na raz (32b) tylko jesli adres jest...
W takich przypadkach winno się raczej stosować static_cast, tak jak próbowałeś. funkcja return_data_element() zwraca wskaźnik void Czy funkcja return_data_element() także używa static_cast do stworzenia wskanika na void* z obiektu? (stack_element->return_data_element(... - tutaj zwracany jest...
Witam wszystkich Próbuje zapisać dane wygenerowane przez program do pliku ale podczas rzutowania za pomocą reinterpret_cast wskaźnika na prostą strukturę, przykładowo: [syntax=cpp-qt] struct test { unsigned int mark; unsigned int w; unsigned int h; }; [/syntax] na wskaźnik typu char*,...
Zmieniło się coś w temacie ? Przykładowo jeśli mam blok w którym na wejściu mam zadeklarowaną tablicę typu INt to w starym step7 dla s7-300 bez problemu jak podam wskaźnik do tablicy to ten numer przejdzie czyli np. P#DB1.DBX2.0 ale jeśli chcę to samo powtórzyć dla s7-1200 to niestety już to nie...
Utworzyłem typ strukturalny : typedef struct Interface { int Time; BOOL Thread; unsigned char Buffer_I[100]; unsigned char Buffer_O[100]; unsigned char NumberOfBytes; unsigned char CountError; unsigned char Status; }; następnie...
Spróbuj rzutowania static_cast ( ). Z powodzeniem używam go do przekazywania obiektów jak i nawet pojedynczych metod poprzez referencję między obiektami różnych klas. Oczywiście musisz pamiętać, aby metody miały do siebie uprawnienia (albo public albo np. friend), no i oczywiście, żeby obiekty obu...
Normalni ludzie w takiej sytuacji piszą NULL. Tak, jeśli NULL jest zdefiniowane - a często nie jest. W tym przypadku (kontekście) użycie 0 będzie nieco poprawniejsze - gdyż mamy pusty wskaźnik do struktury, zamiast pustego wskaźnika "do wszystkiego" (void *). Z tego co się orientuję - właśnie z tego...
W prosty sposób nie uda ci się tego zrobić. Ostrzeżenie można łatwo wyeliminować jwnie rzutując typ, ale to tylko maskuje problem. Musisz wiedzieć na jakiego typu zmienną wskazuje wskaźnik. Ty napisałeś kompilatorowi, że wskaźnik wskazuje na zmienną typu uint8_t. Jeśli zrobisz dereferencję wskaźnika...
typowa sytuacja rzutowania. masz komorke pamieci o adresie 0x38. poniewaz chcesz odwolac sie do tego adresu musisz LICZBE 0x38 zrzutowac na wskaznik -> (unsigned char*)0x38 poniewaz zas interesuje cie to co jest pod tym wskaznikiem, przez analogie: *wskaznik *((unsigned char*)0x38) rola...
A czym by się różniło *Ptr[0] = 66; od Ptr[0] = 66; ? Przy pierwszym kompilator (GCC) wywala błąd, że "dereferencing 'void *' pointer" i "invalid use of void expression" Różnica jest zasadnicza *ptr[0] to jak **ptr czyli tablica dwu wymiarowa natomiast zapis ptr[0] rownoważny...
BoskiDialer --> no właśnie cały czas się zastanawiałem jak wyciągnąć spod tego adresu wskaźnik i rzeczywiście tak jak pisałem to odwoływałem się do struktury jakby w pamięci RAM a nie we FLASH. WIELKIE DZIĘKI, jak zwykle zresztą na ciebie można liczyć ;) teraz działa tylko, żeby eclipse nie podkreślało...
Tak, 10 if'ow. Ale z tablica nie powinno być problemów. Nie wiem co zwraca makro _SFR_IO8. Spróbuj rzutować wszystkie adresy na (unsigned char *). unsigned char *CZUJNIKI_P[3]={(unsigned char *)&_SFR_IO8(0x1B),(unsigned char *)&PORTB,(unsigned char *)&THERM_3_SW_P}; I jeśli wpisujesz sam adres...
Witam, Mam problem z przyrównaniem wskaźnika do struktury ze zmienną: struct { .... APS_Address_t srcAddress; ... } APS_DataInd_t; int tmp tmp=indData->srcAddress; wyrzuca mi błąd src/WSNCoord.c:247: error: incompatible types in assignment...
Chcę zrobić biblioteki do programowania okienek To czeka Cię kupa roboty, może znajdziesz jakiś prostszy framework i zajrzysz do źródeł. W każdym razie czeka Cię nauka slotów, sygnałów i innych callback'ów. Jaka jest różnica pomiędzy reinterpret_cast<>() a rzutowaniem z C C-cast działa...
Tworzę nowy obiekt z klasy bazowej, następnie biorę istniejący obiekt z klasy pochodnej i rzutuję na podstawową klasę, aby wykorzystać przeładowany operator z klasy bazowej. Następnie dokładam wyświetlanie informacji, które dokłada klasa pochodna.
Masz w tym kodzie na oko z dziesięć sytuacji granicznych, które powinny być ostrzeżeniem kompilacji, albo oczy powinny to zauważyć. W pierwszym impulsie moje niepomierne zdziwienie wzbudziło wifi.send((const uint8_t*)hello, strlen(hello)); Potem zauważyłem źle zadeklarowane typy, rzutowanie aby to...
Pytam edukacyjnie. A ta struktura ma tylko 3 pola tutaj. W rzeczywistości będzie ona zawierać całą listę dat i czasów, więc będzie duża. Edukacyjnie więc - do wypełniania w pętli służy tablica, a nie rzutowane struktury czy jakieś unie (wspomniane tutaj pomysły z uniami i type-punning są w standardzie...
To wiele wyjasnia, dziękuję bardzo. Korzystając z okazji chciałbym jeszcze zapytać o wyrażenie : *(int*)20000=7 Ja to rozumiem jako wpisanie do zmiennej typu int mieszczącej się pod adresem 20000 wartości 7. Samo (int*)20000 oznacza rzutowanie na wskaźnik do zmiennej typu int, zmienna mieści się...
Trochę się zmaieszałem. Pomocy :-) chodzi mi o rzutowanie wskaźnika np mam taka deklarację (uint32_t *) ?
Ploter chyba niewiele tu pomoże. Co ma być wyświetlane? Jeśli ma to być statyczne (jak w tych nakładkach na wskaźnik laserowy) to może ... zwykły rzutnik do slajdów?
Ja w programach zawsze właśnie stosowałem te przykłady które pokazałeś, tego sposobu z rzutowaniem nie znałem. No taka formułka wygląda dość intrygująco :D Ogólnie to przerabiam kod usbasp, dziwne jest adresowanie pamięci zmienna 32bit, przy adresowaniu 16bit zmienną jesteśmy w stanie oprogramować...
Witam, Próbuje usunąć kilka warningów wyrzucanych przez kompilator, tyczących się przypisywania i inicjalizacji niewłaściwych typów ( brak rzutowania ). Nie jestem jednak pewien czy dobrze wykonuje rzutowanie. Mógłby ktoś rzucić okiem? 1. Przypisanie do wskaźnika na funkcję innego typu wskaźnik...
Idea polega na tym, że wskaźniki krążą po buforze w tym samym kierunku, tak jakby koniec bufora połączony był z początkiem, stąd nazwa "bufor cykliczny". Po dojściu do końca bufora wskaźnik przeskakuje na jego początek. Pierwszy zawsze jest wskaźnik zapisu, za nim podąża wskaźnik odczytu. Jeżeli oba...
Po pierwsze jest to kod c++ a nie c. Odpowiednik w c: [syntax=c] int wbuffer[]={1,1,1,1,1,1}; const int *bufor; //1 bufor = (const int*)wbuffer; //2 printf("B: %d\n", bufor[1]); //3 error bufor[1] = 3; printf("B: %d\n", bufor[1]); [/syntax] To...
unsigned int *ple=(unsigned int*)&ulamek; wszystko jest ok, bo to mówi mniej więcej tyle, co "postaw wskaźnik na unsigned int na adresie zmiennej ulamek". Jeśli tylko zadeklarowałeś 'ple' nie definiując go, to musisz zmienić wskaźnik (czyli samo ple), a nie to co pod nim jest (czyli *ple), i...
"Mu?" ;-) Z pomocą operatora + możesz dodać liczbę do wskaźnika - to przesunie wskaźnik o liczba × rozmiar typu po wyłuskaniu. Oczywiście z void* nie przejdzie, bo void* nie da się wyłuskać. Ale w C tak naprawdę nie trzeba rzutować wskaźnika struktury na void*, bo w C istnieje niejawna konwersja wskaźników....
Alternatywnie możesz skorzystać z dynamicznej alokacji pamięci. Sprawdzi się szczególnie w przypadku dużych tablic. Deklarujesz najpierw typ type tZmienna = array [min...max] of jakis_inny_typ; następnie zmienną wskaźnikową rzutowaną na ten typ var zmienna = ^tZmienna; W inicjalizacji...
Witam, na wstępie przepraszam za użycie sformuowania "Aligned writes", bo żadnen polski odpowiednik nie przychodzi mi do głowy. Jakiś czas temu udało mi się dzięki pomocy developerów Free Pascala zmusić kompilator do prawidłowego generowania kodu dla platformy Thumb2. Wszystko fajnie hula, nie muszę...
Przy tym założeniu idea użycia dynamicznej tablicy całkiem traci sens - bo po co tu dynamika? Dlatego przecież pisałem też o std::array<>. std::vector<> nie sprawdza błędów, tzn. nie ma takiego wymogu. Mnie chodzi o zarządzanie zasobami. A nie zgodzę się, w przypadku operatora new...
Rozwiązanie z postu powyżej jest najlepszym według mnie: if(v) PORTB |= (1<<PB3); else PORTB &=~(1<<PB3); Żeby jednak traktować pojedynczy bit portu jako osobną zmienną można wykorzystać fakt, że rejestry io posiadają swój adres w przestrzeni danych,...
W C rozmiar struktury jest zawsze stały. W C++ pewnego rodzaju rozwiązanie mogą stanowić klasy pochodne (ale też rozwiązanie statyczne). W C można co najwyżej zastosować pseudoobiektowość, tzn. zadeklarować wiele struktur z takim samymi danymi na początku (dane wspólne) i odpowiednio rzutować wskaźnik...
Zapisywać nie wolno nam w ten sam bajt więcej jak jeden raz bez ponownego skasowania danego obszaru przed kolejnym zapisem. Można zapisywać wielokrotnie, ale jedyne co może się stać to zmiana 1 na 0 - jeśli na danym bicie było już 0, to dalsze zmiany nie są możliwe. Rzutujesz wskaźnik na int16_t,...
Witam, Poszukuję metody napisanej w C++ która zamienia liczbę Hexadecimal na float (hex to float). Do tej pory znalazłem kod: unsigned char adres[4]; //bo float ma 4 bajty unsigned char *wtab = adres; float liczba = 15.6; ...
Dziwne rozwiązanie z tym rzutowaniem wskaźnika. W STM32F1 nie było takiego kombinowania. Może jednak dane są wyrównywane do lewej, a nie jak pisze w RM do prawej. Co będzie jak dasz tak: [syntax=c]SPI1->DR = dane<<8;[/syntax]
Musisz poszukać w dokumentacji do Keila jak realizują offsetof - masz też wsparcie ze strony producenta. To makro nie jest standardem dla C i jeśli jakiś kompilator jest za bardzo papieski to się czepia, że rzutujesz wskaźnik na int. Niemniej na pewno jest jakieś specyficzne dla Keila rozwiązanie.
A co dokładnie oznacza ten niewyrównany dostęp? W wielu architekturach założone jest (na poziomie sprzętowym!), że zmienne o rozmiarze 2, 4 i 8 bajtów znajdują się na adresach podzielnych przez (odpowiednio) 2, 4 i 8. Tzn. że gdybyś układał zmienne w pamięci, to np. zestaw czeterobajtowych wylądowałby...
Nawet dla takiego małego Miki jak ja już na pierwszy rzut oka jest jasne że te kody to potężne źródło problemów. Co widać bez wgłębienia się w szczegóły: * Funkcja main() jako rozbiegówka to słaby pomysł. Kolega stmx napisał coś na ten temat (nawet podaje link w promowanych tematach), warto to przeczytać. *...
Wyjaśnię może na spokojnie: Kompilator patrząc na PINA widzi: dereferencję wskaźnika na volatile u8 spod inta rzutowanego na wskaźnik na volatile u8. Krok po kroku? "Zrób to sam" ;] - przykład dla wskaznikow 16bitowych, i 8bitowej danej: 1. Wez fizyczny adres chcianego SFRa , np. 0x6666 2. Rzutuj...
ad.1 Aby zrozumieć co się dzieje w tej linijce musisz dowiedzieć się co to są wskaźniki i rzutowanie typów. Jeżeli restart to tablica, to: [syntax=c]x=restart[0];[/syntax] p... pierwszy element z tablicy do zmiennej x. Nazwa tablicy to jednocześnie wskaźnik (adres w pamięci) do tej tablicy. I...
Kopiujesz tylko 2 bajty sizeof(words) No tak, pozostałość z wcześniejszych wersji tego kodu, kiedy words było zadeklarowane w ciele funkcji jako `uint16_t words istotnie ta konstrukcja jest wykrywana w większości platform, choć dla ARM wołane jest memcpy Jest to kwestia użytych flag kompilatora,...
Co ten zapis w/g Ciebie oznacza? Bo tak w sumie to: &SPI2->DR - bierzesz wkaźnik na rejestr, 32 bit (volatile uint16_t *) - konwertujesz na wskaźnik na liczbę 16 bit, ale wskaźnik, jak to wskaźnik ma tutaj dalej 32 bit (uint32_t) - i rzutujesz 32 bit wskaźnik na 32bit liczbę Na pewno takie...
Dzięki :) Teraz mam kolejny problem char* pch; pch = strtok(data,"!(at)#$%")... while (pch != NULL) { myGLCD.print(pch, LEFT, 130); pch = strtok(NULL,...
No to tylko ta tablica variantów (array of variant) mi przychodzi do głowy, ale musiałbyś ją tworzyć przed każdym przekazaniem do funkcji sortującej. Od biedy tablica wskaźników, ale w funkcji musiałbyś odpowiednio rzutować (a więc i poinformować funkcję, na jaki tym ma rzutować oraz taką tablicę wskaźników...
Powracam z nowym pomysłem, którym są template'y Może na wstępie napiszę po co mi to w ogóle jest. Otóż mam taką fanaberię, żeby stworzyć "framework" do ARMów w C++. Wszystko byłoby fajnie, gdyby nie trudności z przechowywaniem danych w pamięci FLASH. Otóż taka na przykład klasa Pin dla Cortex-M3 (STM32)...
A mógłby któryś z kolegów dokładnie wytłumaczyć czemu nie działa kod Autora z początku tego wątku? to już opisał tmf przecież, bo: test.dana=(unsigned long)bufor[0]; to rzutowanie wartości char w postaci jednego bajtu z tablicy bufor na unsigned long . Nie może to...
to skoro padła odpowiedz jak poradzić sobie z problemem to powiem co poszło nie tak. w językach kompilowanych, na przykład C oprócz zwykłej tablicy istnieje także statyczna czysta tablica. [syntax=c]const char tablica[liczba][/syntax] gdzie liczba to naprzykład [syntax=c]#define liczba 100[/syntax] podczas...
To jest rzutowanie . Tzn. jeśli jedna klasa dziedziczy po drugiej i mamy wskaźnik do klasy która jest starsza w hierarchii (tzn. jest "rodzicem", w tym przypadku object) to możemy z pomocą rzutowania otrzymać wskaźnik klasy która jest młodsza w hierarchii (tzn. jest "dzieckiem", w tym przypadku Button).
Do funkcji przekazuje zmienną typu volatile za pomocą referencji. Ja tam widzę zwykły wskaźnik a nie referencję. Funkcji nieodpowiada to że to co dostaje jest typu volatile. A na czym to "nieodpowiadanie" polega? Próbowałem to zwalczyć rzutując argument ale nic to nie daje. To znaczy...
Error[Pe167]: argument of type "FIL volatile *" is incompatible with parameter of type "FIL *" Obawiam się że to wina kompilatora, bo przykład jest zaczerpnięty z ksiązki w której autor używał kompilatora Eclipse. Czy jest na to jakis sposób? :/ Jasne, od razu wina...
W C kod bez rzutowania przechodzi, bo C ma nieco słabsze typowanie niż C++ i dopuszcza niejawną konwersję wskaźników. C++ jest w miarę kompatybilny wstecz, ale nie wszystko z C się skompiluje bez modyfikacji w C++. BTW, zamiast rzutowania w stylu C, lepiej użyć C++-owego static_cast<char*>(mmap())....
Język C nie wspiera dynamicznych tablic wielowymiarowych. Masz dwie możliwości: 1- wykorzystać "tablicę tablic" czyli tablicę wskaźników; 2- użyć tablicy jednowymiarowej i liczyć indeksy "na piechotę". Twój przykład jest zbliżony do metody pierwszej, tzn. tabpix jest u Ciebie wskaźnikiem na wskaźnik,...
Ta funkcja zwraca wartość ukrytą pod adresem który jest jej argumentem. Proste. Ponieważ w twoim przypadku, pod tym adresem kryje się wskaźnik, funkcja zwraca jego wartość czyli adres tego co ten wskaźnik wskazuje. O to chodzi w twoim kodzie bo rzutujesz to na inny wskaźnik potem. Wskaźnik na...
...Ponadto tablica w kodzie mickpr jest zadeklarowana globalnie, czego podobno należy unikać. Czy dzięki wskazaniu pierwszego elementu tablicy zyskamy dostęp do całej? Czy wewnątrz funkcji da się wtedy zainicjalizować tablicę w ten sposób : tab = {{.....}, {.....}, {.....}} ?...
Przeniosę to przerwanie i tablice do plików .c. Ale wtedy w pliku głównym .c mam includować plik przerwania .c? Myślałem, że tam inkluduje się tylko pliki .h Nie musisz include'ować pliku .c, a nawet nie powinieneś. W Makefile dopisz go tylko do plików źródłowych (SRC = $(TARGET).c przerwanie.c inny_plik.c...
Do funkcji w przykładzie przekazywany jest wskaźnik. W C/C++ nazwa tablicy jest jednocześnie wskaźnikiem na początek tablicy(tłumaczyłem Ci to bodajże przy okazji Twojej walki z jpg:). Czyli: Text_1234 == &Text_1234[0] Więc robisz dobrze w swoim kodzie(a przynajmniej w pierwszej jego...
Witam staram się nie wypowiadać na tematy z pogranicza wiedzy a fantazji. Bo odczucia na słuch to fantazja .Mam jednak pytanie jak wyglądają pomiary samego transformatora jego rezonans zniekształcenia samego pasma.Ja osobiście preferuje wzmacniacze na mos fetach brzmią dla mnie czyściej. Konstrukcja...
Nie rozumiem jeszcze dlaczego ale kompilator czasami podkreśla mi składnię na żółto tego: res = pf_open(strcpy_P( files, plik i podaje komunikat passing argument 2 of 'strcpy_P' discards qualifiers from pointer target type . Dlatego że przez całą książkę piszę, przypominam o tym wszędzie...
Spróbuj może użyć do odbierania danych terminala z podglądem w HEX. Jeśli masz dane typu int, a podstawiasz nieduże liczby do większość wysyłanych danych stanowią zera, które tekstowe terminale zwykle ignorują. Okazało się, że problemem jest ignorowanie zer przez funkcję odbierającą dane na PC....
Pierwszy zapis o który pytasz, to tablica wskaźników na funkcję, która to funkcja nie zwraca wartości i nie przyjmuje wartości. Zapis const oznacza, że tablicy nie będziemy modyfikować. Zapis, moim zdaniem bardziej czytelny, który sam stosuję w takim przypadku (z głowy): typedef void (*pVector_t)(void); __a...
W takiej sytuacji kompilator wygeneruje błąd niezgodności wskaźników. Wskaźnik na FLASH nie można niejawnie rzutować na zwykły wskaźnik. Jeśli potrzebujesz przesyłać do jednej funkcji wskaźnik na FLASH i na SRAM należy użyć __memx. Ta przestrzeń jest kompatybilna z przestrzeniami FLASH i SRAM, a kompilator...
Nie można tak zrobić, bo nie zgadzają się typy. Do "char" można przypisać "znak", a odczytać "znak". Do "char *" można przypisać "adres zmiennej w której jest znak ", a nie "adres w którym jest coś". Odczytać można ten adres, lub - przez pojedynczą dereferencję - znak który jest pod tym adresem. Do...
Dziędobry Co oznacza wskaźnik we (uint8_t *)txt ? Najprawdopodobniej funkcja, którą wołasz, czyli HAL_UART_Transmit_DMA jako drugi parametr ma zadeklarowany wskaźnik na uint8_t. W celu uniknięcia ostrzeżeń kompilatora wykonane jest takie rzutowanie. A swoją drogą, to możesz to usunąć,...
Zgodnie z podpunktem 9 p. 6.5.6 oba odejmowane wskaźniki muszą wskazywać na elementy tej samej tablicy lub na element tuż za tablicą. Jeszcze podpunkt 7 mówi, że na potrzeby punktu 6.5.6 wskaźnik do obiektu, który nie jest tablicą, liczy się jak wskaźnik do tablicy elementów danego typu o długości 1....
No to połowa sukcesu za Tobą :) Druga połowa to pokazanie, że kod generowany przez kompilator jest taki sam (lub lepszy) jak przy łopatologicznym: TIMSK |= _BV(3); I tutaj chyba polegniesz, bo z tego co pamiętam to pobranie adresu rejestru, rzutowanie na uint a następnie rzutowanie na...
Przepraszam za opóźniony powrót do tematu ale musiałem do tego dojrzeć... 1. char a unsigned char (uint8_t) to co innego. string napisany tak jak w wywolaniu twojej funkcji jest typu char*. musisz wiec albo zmienic swoja funkcje, albo zrzutowac na (uint8_t*), albo to olac... Wydawało mi się że...
program W czym problem? Przepisujesz znak po znaku(albo linijka po linijce) plik źródłowy dotąd aż nie napotkasz w nim znacznika końca pliku EOF. ch = getc(input); while(ch != EOF) { ch = getc(input); putc(ch, output); } Gdybyś chciał tak zrobić...
Według standardu języka C wynik rzutowania nie jest l-wartością. Dawniej gcc zezwalało na takie konstrukcje, ale od którejś wersji wyrażenia tego rodzaju generują błąd podczczas kompilacji. Radziłbym posługiwać się cały czas wskaźnikiem i ew. rzutować go na DWORD w przypadku gdy potrzebny jest adres. Edit:...
Dziękuję Ci kolego tmf !!! zadziałało... jednak wychodzi brak praktyki obycia i przede wszystkim wiedzy... dzisiejszy wieczór przeznaczony już został na jeszcze lepsze przyswojenie sobie wiedzy o wskaźnikach i ich użyciu jako argument funkcji ;) [syntax=c] uint8_t search_nametab(uint8_t *dest,...
Usunięcie tablicy nie przyniosło oszołamiających efektów, choć poprawiło sytuację. Dane są wysyłane poprawnie do mniej więcej 32 czy 64-tej próbki, a ja chciałbym wysłać ich 255. Kolejne próbki po bodajże 64-tej znów są przekłamane. Nie wiem w czym piszesz, ale dziwnie działasz na wskaźnikach/adresach....
Witam wszystkich. Od jakiegoś czasu ćwiczę STMy. Przyszedł czas na bootloader, ale stanąłem w zasadzie na początku drogi. Mój zestaw to: - ARM GCC (Linaro) w wersji 4.7 2012q4 - CooCox - STM32F4 Discovery - przykład AN3965 "STM32F40x/STM32F41x in-application programming using the USART" Po...
Generalnie - owszem, ale twórca biblioteki nie jest zmuszony do utrzymania trendów specyficznych językowi. Bo w C możesz zawsze dać uint8_t x=(void*)DowolnyWskaźnikLubInt; i zadziała bez ostrzeżeń. Otóż mój drogi Kolego, jako początkujący programista popełniasz ten sam błąd jak 99.9% początkujących...
Czyli z Twojej wypowiedzi wynika,że volatile jest tak wskawione bezzasadnie i przez to pogłębia się problem? Otóż nie, nie wstawiając volatile, program jest optymalizowany i nie będzie działał. A rzutując wskaźnik na wskaźnik na typ volatile (a nie wskaźnik volatile) nic się nie zmienia w kodzie...
Po raz "enty" piszę, żebyś wrzucał konkretny kod który pozwoli się odnieść do problemu, najlepiej z konkretnym komunikatem kompilatora w którym opisuje on co mu się nie podoba. Skąd ja mam wiedzieć, jaki jest typ zmiennej `tablica`? Czy jest to tablica dwu- czy trój-wymiarowa? A może to znów nie jest...
Odpowiednikiem instanceof jest is . Wskaźniki do obiektów można przechowywać w kolekcji Objects obiektu TStrings (jak wyżej w poście mirekk36) albo w liście TList, przy czym w pierwszym przypadku elementy są obiektami klasy bazowej TObject i można je od razu rzutować operatorem as , a w przypadku...
Witam. mpo : Nie mam. Tzn jest tam wsadzony mały dławik (nie ma go na schemacie) pomiędzy bazę a masę, więc daje odczyt jakby było zwarcie. Wylutuj dławik oraz R105 i sprawdź 2SC2166 omomierzem na wyłączonym zasilaniu. Może ten dławik ma za małą indukcyjność i "dławi" (zwiera) sygnał do PA...
error C2679 dostajesz, bo nie masz zdefiniowanego konstruktora kopiującego. Jak tylko go stworzysz, dostaniesz błąd o niezgodności typów albowiem: obserwowane *tab[13]; deklarujesz tablicę wskaźników do obiektów, i masz do tego prawo, ale zaraz potem tab[li]=spolki(tablica[i...
Epokowe odkrycie to nie jest, zapewne wszystko co już było do napisania na ten temat zostało już (gdzieś - tylko gdzie :) ) napisane... Dziedziczenie i polimorfizm to podstawy, "hermetyzacja" to kwestia podziału nagłówków na interfejs (publiczny) i implementację (prywatny). Dziedziczenie robi się...
Niestety, ale jeśli chcesz tablicę wskaźników, przy czym wskaźniki wskazują na konkretne bloki pamięci, musisz je inicjalizować. Jeśli obie tablice są globalne, to bez problemu powinno dać się to zrealizować jakoś tak: [syntax=C]static char buff0[5][20]; char *menu_main[5] = { buff0[0], buff0[1], buff0[2],...
Ależ kompilator to wie - bo wskaźnik ma określony typ i ten typ definiuje sposób wywołania funkcji. Tak jak to pokazałem na przykładzie wcześniej, to wywołujący funkcję musi zadbać o właściwe rozmieszczenie parametrów, sama funkcja uzyskuje do nich dostęp zgodnie ze specyfikacją ABI. Oczywiście jeśli...
Zobacz, jak jest zdefiniowana zawartość ROM. Rzutowanie jest niezbędne, żeby z liczby zrobić jakikolwiek wskaźnik, a to jest wskaźnik na wskaźnik na tablicę. Samo przypisanie tego wskaźnika do zmiennej jest natomiast bez sensu, bo wystarczyłoby to zgrabnie zrobić przez #define.
Innymi słowy dążysz do stworzenia potworka programowego, który pod pozorem uniwersalności niepotrzebnie komplikuje Twoje oprogramowanie. 4kB program bez "nadmuchaczy kodu" typu float itp. to już mały potworek ;) Wraz z ilością kodu potworek rośnie. Śmigły rycerz czy się boi czy nie potworków,może...
Yakhub: wsk->wsp_x //dokładnie taka notacja.. co do definicji wskaźnika samego do siebie można zrobić wskaźnik typu void a potem go rzutować..
Sprawdz jakich parametrów oczekuje funkcja eeprom_write_byte() Z tego co pamiętam oczekuje ona wskaźnika a nie int'a, Dokładnie o tym informuje Cię kompilator że zrobił rzutowanie. Włóż tam wskaźnik a powinno pomóc.
No to raczej nie działa tak, jak chciałeś. Aby porównywać kolejne bajty począwszy od wskaźnika, warunek powinien być inny: if ( *((uint8_t *)ptr + i) == chara) Zwróć uwagę na nawiasy. chara jest już zadeklarowane jako uint8_t, więc nie ma potrzeby rzutowania. Zbędnego...
Niekompatybilny wskaźnik - o co chodzi? Chodzi o funkcję int uart_putchar (char c) Wedle definicji funkcji: fdevopen (int(*put)(char, FILE *), int(*get)(FILE *)) fdevopen oczekuje jako pierwszego argumentu wskaźnika na funkcję,...
Po 1: kolejność bitów w strukturze bitowej zależy od kompilatora - może sobie ustawiać jak chce. Po 2: na 99% kompilator nie wygeneruje Ci z tego instrukcji sbi czy cbi, tylko odczyt lds, zmianę i zapis sts (albo jeszcze lepiej, bo przez wskaźnik Z). Szkoda zachodu. Edit: sprawdziłem - dostęp przez...
Czym się błąd objawia? Ponieważ obiekt posiada tylko wskaźnik, operujesz na bloku przekazanym do konstruktora - a ten jest typu 'const char*' (dochodzi do niejawnego rzutowania, o którym kompilator wyjątkowo nie informuje) - oznacza to, że nie powinno się tego ciągu modyfikować (lub próba modyfikacji...
Freddie Chopin : Masz drobny błąd w kodzie - na wskaźnik rzutujesz nie adres zmiennej "data", tylko jej wartość. Ogólnie warto jest posiadać funkcję do wysyłania bloku danych - wystarczy podać wskaźnik oraz długość danych.
A tutaj jest odwrotnie. To funkcja zwraca wskaźnik. A do wskaźnika tablicy nie zrobię. A to niby dlaczego działa?: #include <stdlib.h> int main() { unsigned int i = 0; int *bufor = (int *)malloc(20 * sizeof(int)); for(i = 0; i <...
Nie dodałem, że mogę maksymalnie wykorzystać 1kB pamięci RAM AVR. chociaż nie wiem na czym niby polega trudność w rzutowaniu wskaźnika - pamięć i wewnętrzna i zewnętrzna są dostępne w dokładnie ten sam sposób. RAM mam podłączony poprzez zatrzask do zwykłych portów uC. Jak na razie to kopiowałem...
Zasadniczo po pierwsze, do funkcji można przekazywać nie tylko wskaźniki, ale i tablice: void func(uint8_t array[][6]) { ... } Podobnie jak przy deklaracji samej tablicy - można pominąć "skrajnie lewy" wymiar. Spróbuj czy takie coś by nie działało jeśli dodasz atrybut PROGMEM do tego parametru. Po...
Linia z #define to makro preprocesora, po, nomen omen, definicję i opis odsyłam do Googli. :) To makro przyjmuje wskaźnik, rzutuje go na wskaźnik na strukturę pole_bitowe (słowo kluczowe volatile to zakładam, że wiesz, co robi) i zwraca samą strukturę. Prawdopodobnie da się to opisać jaśniej, bardziej...
Rzutując wskaźnik na tym char. char *bajtpobajcie = (char*)&Pomiar; EDIT Proszę pamiętać, że w przypadku przesyłania danych bajt po bajdzie pomiędzy różnymi urządzaniami w przypadku danych większych niż jeden bajt w interpretacji ma znaczenie architektura (konkretnie kolejność bajtów aka...
Robiłem bardzo podobny prostownik, ale dołożyłem jeszcze regulację końcowego napięcia ładowania. To zaleta, gdy chcemy mieć większą kontrolę nad ładowaniem (można nawet ustawić pracę buforową), i wada, gdy użytkownik nie wie co robi, więc może to i lepiej, że nie ma regulacji. Wskaźnik napięcia fajny...
Jak użyć stałych zapisanych w pamięci programu przez const unsigned char TEXT[] = "jakiś tekst"; W funkcjach typu strcpy(), strcmp() itp? Te funkcje nie przyjmują wskaźnika do const więc nie można zrobić tego w ten sposób: strcmp(bufer, TEXT); co gorsza nie...
Witam serdecznie ;] Piszę w Borland C++ i obsługę com oparłem na WinAPI (obsługa com jak plik binarny). Zrobiłem już sprawnie działające nadawanie i odbieranie ramki. Ramka jeśli jest poprawna to jest zapisywana do vectora unsigned char (miałem problemy z dynamiczna tablicą unsigned char bo gdy tworzyłem...
Nie można było tak od razu? Teraz przynajmniej mogę Ci powiedzieć dlaczego działa. Deklarując te 8 tablic i wkładając je do tablicy liczb całkowitych, dokonujesz niejawnego rzutowania z wskaźnika na tablicę (którym jest nazwa tablicy) na liczbę całkowitą. Potem jak wkładasz kolejne elementy tablicy...
Kompilator jak zwykle ma rację ;-) Wskaźnik jest na inny typ niż wskazywana zmienna. Ale zabieg ten jest celowy - zmienna ptr służy do wyłuskiwania kolejnych bajtów z typu uint32_t. Twoja poprawka nie jest dobra - eliminuje warning wraz z ideą. Takie wylanie dziecka z kapielą. Rozwiazaniem jest...
(*(TC0_t *) 0x0800).CTRLA = TC_CLKSEL_DIV8_gc; i to to jest? o co tu chodzi? nie kumam tego. (TC0_t*)0x0800 - liczba 0x800 rzutowana na wskaźnik, czyli to wyrażenie jest wskaźnikiem na strukturę TC0_t (która jest pod adresem 0x800, tam gdzie akurat sa odpowiednie rejestry timera) *(TC0_t*)0x0800...
Linijka : [syntax=c]volatile struct st_can __evenaccess * can_block_p;[/syntax] oznacza definicję wskaźnika o nazwie can_block_p, na strukturę typu st_can. Linijka: [syntax=c]can_block... = (struct st_can __evenaccess *) 0x90200;[/syntax] inicjalizuje wskaźnik can_block_p adresem 0x90200 rzutowanym...
Adres zmiennej _main_ram_start który jest równy wartości 0x20000000 jest rzutowany na wskaźnik na strukturę framebuffer. W konsekwencji wskaźnik fb też przyjmuje adres 0x20000000.
Uzupełnie temat o post ,,negujący samego siebie". Byłem po piwie - sam ciągle mieszam liby C i C++, tym bardziej używam natywnych bibliotek C a potem mieszam z C++. Jedynie 64 bitowe podejście może zatkać niektóre bilbioteki poprzez brak kompatybilności, głównie przez wskaźniki na voidach * i stare przyzwyczajenia...
Możesz zrobić sam funkcję, która ustawi wskaźnik w pliku na odpowiednią pozycję a następnie będzie odczytywała znaki z pliku. Aby zagwarantować, że odczytane znaki będą liczbowe odczytuj znak po znaku i sprawdź czy rzutowane na tym int znajdują się w przedziale oznaczanym jako liczby w kodzie ASCII. Dalej,...
Mam jeszcze pytanie: dlaczego w wyrażeniu "const uint16_t (*) Przy rzutowaniu rozmiar tej tablicy nie jest istotny. Podanie tej wartości niczego nie zmieni. Kompilator musi mieć tylko informację, że do wskaźnika na dany typ wpisywane są adresy danych tychże właśnie typów. Puste nawiasy [] informują...
(at)-psiak- Znowu zgoda, dzisiaj mam dzień "pomroczności jasnej". :wink: (at)Damian7546 Standardowe rzutowanie z typu całkowitego na float zrobi zwykłą konwersję liczbową tzn. tak, aby wartość była jednakowa, a nie reprezentacja bitowa w pamięci. Stad konieczność użycia "po drodze" typu wskaźnikowego,...
Jest to jak najbardziej do osiągnięcia - na tej samej zasadzie działa rzutowanie w EOTechu. Trzeba dobrać tylko odpowiednie proporcje. I bardziej zastanawia mnie czy jest ktoś w stanie coś takiego wydrukować(?) Tak, możliwe. Ale wg mnie idąc tym tropem można również przerobić Opla Vectre na Forda...
Ale przesunięcie musisz realizować na wskaźniku na typ dwubajtowy! Wybacz, za głupie pytania, ale kompilator wyrzuca mi błąd przy deklaracji wskaźnika dotyczący konwersji typów. [syntax=c] char tab[6] = {'1','2', '3', '4', '5', '6'}; unsigned short *p = tab; // error: cannot convert ‘char*’...
W Twoim przypadku zapisujesz pierwszy (starszy) przychodzący bajt w dane_RX[1] a drugi (młodszy) - w dane_RX[0], bo, jak sam napisałeś, masz dane nadchodzące w big endian a AVR pracuje w little endian, więc musisz odwrócić kolejnośc bajtów w pamięci. I teraz możesz sobie przykładać wskaźnik do typu...
(assignment makes integer from pointer without a cast Przetłumacz sobie to na polski: "operator przypisania powoduje zmianę wskaźnika na wartość całkowitą bez rzutowania" i chyba jest jasne w czym jest probiem? `*(__IO uint16_t*)(Page_127 + i)` - abstrahując od tego czy jest to poprawne, jest...
Dokładnie tak jak piszesz, malloc to rezerwacja pamięci (memory allocation). Nawias to rzutowanie - informujesz kompilator, że świadomie chcesz przypisać wynik działania funkcji malloc (która zwraca wskaźnik na void - ) do wskaźnika na int.
setButton: wydaje mi sie, ze on jedynie zapisuje informacje o tym gdzie znajduje sie button a sprawdzenie nadal ma sie odbyc dopiero w bit_is_clear? Funkcja setButton zapisuje to co jej przekazujesz, a przekazujesz wartość odczytaną z wejść. c i kopiowana do argumentu funkcji foo . Funkcje...
_lazor_ Jesteś wielki! Dziękuję za nakierowanie, zmiany były potrzebne zarówno w zapowiedzi jak i w deklaracji struktury. Do struktury trzeba było dodać const, by wskaźniki kierowały na FLASH, oraz zrobić pełne zapowiedzi z modyfikatorem extern. Czyli kod , który został poprawnie skompilowany brzmi: [syntax=c] /* ...
cyt.: "Jednostaka dBu jest używana do określania poziomu wartości skutecznej napięcia. 0 dBu jest zawsze równe 0,775 wolta." I jest jedynie jednostką ilorazu napięć bowiem nie od przypadku nazwano ją jako unloaded. Czyli dotyczy poziomu napięciowego nieobciążonego wyjścia sygnałowego. Oryginalnie...
typ pointer to jest w Pascalu odpowiedni w C to będzie void * , jest to najbardziej ogólny typ wskaźnika który można potem rzutować na dowolny typ struktury.
co do twojego robocika i kamerki to chyba dosc latwo mozna by wykrywac przedmioty na jego drodze gdyby jakos rozszczepic promyk wskaznika laserowego i rzucić pod jakims kontem na ziemi przed nim. chyba ktos wspomnial tez o diodzie z dvd albo cd (jesli kamerka by ją widziala) ja bawilem sie ze zwyklym...
Kolega elektryk wyjaśnił już wszystko od strony praktycznej, ja uzupełnię co nieco z zakresu teorii :) W tym problemie występuje (dość często spotykana) potrzeba rzutowania typu obiektu w dół hierarchii dziedziczenia. TShape jest pochodną klasy TControl (i to nie bezpośrednią). Formularz posiada kolekcję...
Sprawa jest prosta (?). Albo masz walnięty kompilator (nie znam dokładnie tego kompilatora ale możesz zapewne uzyskać wynik kompilacji w assemblerze, obejrzyj co robi kod odpowiadający za inkrementacje zmiennej) Albo inne operacje w ramach tej funkcji (te których nie pokazałeś) smarują tobie po stosie...
OK pierwsza linijka: deklaracja wskaźnika s. druga linijka: &f - pobranie adresu w pamięci zmiennej f (jest ona typu float). Ta operacja zwróci wskaźnik do float, czyli float*. Ale zamieniamy to na char*, więc wykonujemy rzutowanie (char*)&f. Wskaźnik s będzie wskazywał na adres zmiennej f, ale...
Postanowiłem liczbę typu float rozbić na 4 bajty stosując rzutowanie na wskaźnik char. A następnie przesyłać bajt po bajcie do PC jednak mam problemy, ze złożeniem tego na PC bo ostatecznie odbieram inną liczbę niż wysyłam.Kody programów zamieszczam poniżej: #include <avr\io.h> unsigned...
Cześć Co do tego co napisałem wcześniej( będą strony z data sheet do Twojego procka): Jak program odwoła się do obszaru pamięci UNDEFINED(ABORT)str.18,19 to generowany jest wyjątek "data abort", procesor wchodzi w tryb "ABORT MODE" i skacze pod adres 0x00000010 a adres powrotny zostaje zapisyna w rejestrze...
Czyli rand() % 4 oznacza, że ma losować z liczb 0,1,...3 ???? Tak rand() % 4 oznacza że losuje liczbę 0 lub 1 lub 2 lub 3 a int JakasZmienna JakasZmienna=rand() % 4 że wartość tej zmiennej to ta losowa liczba. Liczby często losują się te same ale uruchamiając mój kod ileś tam razy wylosuje każdą...
Nie wiem, czy nie bezpieczniej byłoby użyć wyłącznie wskaźnika i rzutowania (timer: Pointer; TTimer(timer).Enabled:=false). Bibliote... DLL bardzo nie lubią niestandardowych rozwiązań, jako choćby nawet Stringi :) Pamiętaj, ze DLL nie widzi wywoływanego jej programu, stąd zapis form1.timer1 jest...
Podsunąłeś mi pewien pomysł... zrzutowałem sobie wskaźnik na tekst w pamięci programu na typ void* Kompilator rozpoznaje typ void* i odróźnia go. Później znowu sobie go rzutuje na const char*.
Oj napiszcie mu dopiero się uczy :) Masz gotowe: srand (static_cast<unsigned int>(time(NULL)))... "Wywołuje ona funkcję srand(), podając jej ziarno uzyskane poprzez time(). Ze względu na to, iż time() zwraca wartość należącą do specjalnego typu time_t, potrzebne jest...
Najlepiej wykonywać konwersję za pomocą unii: union { float flt; uint8_t u8[4]; } temp; temp.flt = e; /* tutaj robisz co Ci się podoba z temp.u8 */ Rzutowanie float na uint8_t* itp może być mniej efektywne + podpada pod aliasing wskaźników. Pozdrawiam, Dr.Vee