Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 6 kwi 2026, o 14:47


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 3 lut 2017, o 00:08 
Offline
Użytkownik

Dołączył(a): 10 sty 2017
Posty: 50
Pomógł: 5

Witam
Mam taką oto strukturę
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Tworzę tablicę:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Oraz funkcję iterującą po tej tablicy
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Kompilator rzuca warningiem :
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jak zamiast sizeof(input_pins) wpiszę na sztywno 5 oczywiście warninga nie ma.
Co tak na prawdę ten warning oznacza i jak się go pozbyć?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2017, o 07:21 
Offline
Użytkownik

Dołączył(a): 07 cze 2016
Posty: 563
Pomógł: 143

riddik napisał(a):
Jak zamiast sizeof(input_pins) wpiszę na sztywno 5 oczywiście warninga nie ma.
Co tak na prawdę ten warning oznacza i jak się go pozbyć?

To może byś spróbował
(sizeof(input_pins)/sizeof(input_pins[0])
?

"warning: iteration 5u invokes undefined behavior"
"piąta iteracja pętli wywoła niezdefiniowane zachowanie"

sizeof(input_pins) na pewno zwraca wartość większą niż 5, bo zwraca rozmiar całej tablicy w bajtach, a nie ilość jej elementów. A kiedy wartość indeksu przekroczy ilość elementów w tablicy (w Twoim kodzie zmienna i może przyjmować wartości od 0 do 4), to co się może wydarzyć? Skąd dane będą czytane i gdzie zapisywane? To jest właśnie "undefined behavior" czyli "niezdefiniowane zachowanie" programu, bo dane mogą być odczytywane z i zapisywane do lokalizacji poza tablicą, gdzie mogą znajdować się inne zmienne.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 lut 2017, o 08:52 
Offline
Użytkownik

Dołączył(a): 10 sty 2017
Posty: 50
Pomógł: 5

Faktycznie 1 rekord zajmuje 5bajtów. Po 2 na adres portu i 1 na maskę. Czyli sizeof(input_pins) zwraca 25.
Dzięki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO