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



Teraz jest 7 lut 2025, o 18:23


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 4 lis 2012, o 20:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 233
Lokalizacja: Gdynia
Pomógł: 15

Przy próbie kopiowania dwóch tablic volatile:

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


dostaje worningi:

Kod:
Multiple markers at this line
   - passing argument 2 of ‘memcpy’ discards qualifiers from pointer target
    type
   - passing argument 1 of ‘memcpy’ discards qualifiers from pointer target
    type


Próbowałem rzutowania argumentów do (const char *) ale worning nie znika. Wiem, że jest to związane właśnie z przekazywaniem argumentów volatile ale nie wiem co z tym zrobić. Napisać własną funkcję kopiowania?

-----
Pomogło jednak rzutowanie, zapomniałem skompilować program. Nie wiem tylko jakie to może mieć w tym wypadku konsekwencje.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2012, o 21:06 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

Nie pomogło skompilowanie, pewnie po prostu drugi raz kliknąłeś BUILD a wtedy wszystkie warningi znikają i to jest normalne. Wystarczy, że zrobisz CLEAN/BUILD i warningi znowu się pojawią.

Rozwiązanie jest proste, nie trzeba żadnego rzutowania, nie trzeba pisać własnej funkcji

po prostu pozbądź się specyfikatora volatile dla tablic, bo dla tablic nie trzeba.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2012, o 21:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 maja 2012
Posty: 233
Lokalizacja: Gdynia
Pomógł: 15

mirekk36 napisał(a):
Rozwiązanie jest proste, nie trzeba żadnego rzutowania, nie trzeba pisać własnej funkcji

po prostu pozbądź się specyfikatora volatile dla tablic, bo dla tablic nie trzeba.


Nawet jeśli mogą być uzupełniane w przerwaniu? Dzięki, tego nie wiedziałem.
I jeszcze jedno czy tak samo będzie ze strukturami i uniami?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 lis 2012, o 21:45 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27354
Lokalizacja: Szczecin
Pomógł: 1042

nixie napisał(a):
Nawet jeśli mogą być uzupełniane w przerwaniu?


Tak.

nixie napisał(a):
I jeszcze jedno czy tak samo będzie ze strukturami i uniami?


O nie nie ;) tu już nie halo ;) ... chodzi o to, że dostęp do tablicy musi być i tak zawsze realizowany w asemblerze w oparciu o pary rejestrów indeksowych i nie da się tego zoptymalizować jak dostępu do pojedynczej zmiennej, którą można wrzucić w pojedynczy rejestr i już.

Unie i struktury - zawierają w środku jakby nie patrzeć pojedyncze zmienne, więc dostęp do nich można już spokojnie zoptymalizować (tzn kompilator może zoptymalizować). Dlatego tu już czasem trzeba volatile.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



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: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 5 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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO