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



Teraz jest 25 lip 2026, o 10:32


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 11 ] 
Autor Wiadomość
PostNapisane: 22 kwi 2017, o 00:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Próbuję zapakować luźno działający program do biblioteki i za cholerę nie przyjmuje mi takiego zapisu:

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

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

przechodzi bez problemu tylko, że ja nie chcę 2-bajtowego "int" tylko 1-bajtowy "int8_t".

I pewnie bym sobie odpuścił gdyby nie fakt, że zanim rozdzieliłem pliki do xxx.c i xxx.h to właśnie "int8_t enc_get(void)" w programie działało i nie wywalało żadnych błędów, a on teraz cały czas krzyczy na czerwono, że "unknown type name 'int8_t'" po najechaniu kursorem na linię, a w konsoli: error: conflicting types for 'enc_get'. Nic już z tego nie rozumiem. Oczywiście gdy zostawię "int" to biblioteka działa jak należy, ale chodzi o sam fakt takiej selekcji - tu działa, a tam się obraża... Czy może znowu coś przegapiłem...?

------------------------ [ Dodano po: 10 minutach ]

Aha, wstawiłem "signed char" i zatwierdziło bez problemu, tylko ta rozbieżność interpretacji mnie interesuje.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2017, o 01:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Niestety, to nie pomogło, nadal ten sam błąd dla "int8_t" :(
Co ciekawe w momencie napisania tego "typu" nic nie podświetla, a dopiero kompilacja powoduje error.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2017, o 04:38 
Offline
Moderator
Avatar użytkownika

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

SylwekK napisał(a):
a on teraz cały czas krzyczy na czerwono, że "unknown type name 'int8_t'"


masz źle.... hmmm bardzo źle porobione #inkludy w plikach :(

pokaż szkielet plików *.c i *.h tzn tylko jak masz zrobione includy oraz definicje i deklaracje odnośnie tej funkcji

_________________
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: 22 kwi 2017, o 09:33 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Oto prawie kompletne pliki ze wszystkimi zmiennymi. Prawie, bo wycięta tylko główna funkcja. Całość oczywiście prawidłowo działa o ile spełnione są warunki, o których pisałem wyżej.

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




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


Najprawdopodobniej to wina mojego małego doświadczenia w tworzeniu bibliotek, bo zrobiłem ich bardzo niewiele, a przy tym nie miałem potrzeby wykorzystywać akurat takiej funkcji z int8_t i pewnie dlatego problem dopiero teraz wyszedł. O wiele częściej modyfikowałem (nawet dość drastycznie) inne gotowe biblioteki do własnych potrzeb i tam problemu nie było. Właściwie to się zawsze bardziej na algorytmach skupiam niż na całej otoczce :)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2017, o 10:37 
Offline
Użytkownik

Dołączył(a): 29 mar 2012
Posty: 595
Lokalizacja: Jaworzno
Pomógł: 39

Taka drobna uwaga z mojej strony. Zawsze dołączamy biblioteki "systemowe" _przed_ includami swoich bibliotek.


Autor postu otrzymał pochwałę

_________________
Pozdrawiam
PP



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2017, o 10:43 
Offline
Moderator
Avatar użytkownika

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

SylwekK napisał(a):
#include "encoder_SK.h"
 
#include <avr/io.h>


a kolega niby ma Bluebooka ;) ... a tam już wyraźnie pisałem , nie mówiąc o wszystkich poradnikach i forum itp itd ;)

ale za to - no teraz to już Sylwek zapamiętasz na całe życie - że

1. NAJPIERW inkludujemy pliki systemowe

2. PÓŹNIEJ inkludujemy własne pliki nagłówkowe


to jest prosta ale jakże ważna zasada

tzn pewnie może nie pomyślałeś jak działa inkludowanie i stąd takie pomysły może że kolejność jest nie ważna.

Tymczasem inkludowanie to nic innego jak (hmmm włączanie innych plików do tego pliku gdzie jest #include)

i teraz sobie pomyśl jak to wygląda

Cytuj:
[PLIK PO WYKONANIU WSZYSTKICH INKLUDÓW]

int8_t enc_ .....

.... a dopiero tutaj dzięki inkludowi <avr/io.h> jest definicja typu int8_t ...



to skąd niby ma być znany typ int8_t na samej górze - skoro kompilator leci po kolei linia po linii ?


Autor postu otrzymał pochwałę

_________________
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: 22 kwi 2017, o 11:10 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

Kurcze no i jak zwykle pogotowie błyskawicznie działa :) Dzięki panowie, mieliście rację. Teraz bez problemu przeszła kompilacja.
Co ciekawe moje myśli krążyły wokół tych inkludów i nawet w desperacji zacząłem zaglądać wczoraj do avr/io.h i szukać jakichś ograniczeń... a tu jak zwykle banał. Fakt teraz sobie przypominam, że była o tym mowa. Jak już wspomniałem wychodzi brak doświadczenia w czymś co robi się od święta czyli własne biblioteki ;)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2017, o 11:49 
Offline
Moderator
Avatar użytkownika

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

SylwekK napisał(a):
Jak już wspomniałem wychodzi brak doświadczenia

To że zapomniałeś o kolejności inkludów to banał ... każdemu może się zdarzyć ;)

ale jak ty masz brak doświadczenia w programowaniu to ja jestem księdzem :lol:

Jak dla mnie "to jedno z najpiękniejszych przejść z Bascoma na C" na tym forum w twoim wykonaniu ... a że w samym Bascomie śmigałeś że aż strach (w pozytywnym tego słowa znaczeniu oczywiście!) to nie ma się dziwić, że w luźniejszym płaszczu jakim jest C - możesz się jeszcze bardziej "rozszaleć"! Tak trzymaj ;)

_________________
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: 22 kwi 2017, o 12:32 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

No właśnie w takich sytuacjach wychodzi brak doświadczenia :D
A chciałem przed publikacją mojej obsługi enkodera umieścić go w jakiejś zgrabnej w miarę wygodnej bibliotece tak dla wyprawki. Jak się okazuje warto było sobie przypomnieć zasady ;-)

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2017, o 14:39 
Offline
Użytkownik

Dołączył(a): 10 lip 2015
Posty: 334
Pomógł: 32

Wcale nie trzeba włączać <stdint.h>. Jest on pośrednio włączany do projektu poprzez <avr/io.h>.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 kwi 2017, o 15:30 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1988
Lokalizacja: Lipsko
Pomógł: 125

quartus napisał(a):
Kto może wiedzieć do czego będzie wykorzystywany enkoder i czy "będzie miał szczęście" pracować wraz z <avr/io.h> który tak się składa że ma wczytane <stdint.h>?


Nie to żebym się czepiał, bo moja wiedza na temat bibliotek jest średnia mówiąc szczerze, ale tworząc ją w zasadzie nie widzę jej zastosowania gdzieś gdzie by brakowało <avr/io.h>... Jeśli ktoś by już był na tyle zdesperowany, że na inny sprzęt by ją adoptował to pewnie upora się też z brakującym <stdint.h>. Tym bardziej dziwi mnie (a może po prostu nie rozumiem zagadnienia tak do końca) to co proponujesz, bo <avr/io.h> jest przecież w pliku biblioteki .c to jaki sens jest ją dublować? To takie moje skromne zdanie :)

_________________
http://www.sylwekkuna.com



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

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 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