Σελίδα 3 από 11 ΠρώτηΠρώτη 1 2 3 4 5 ... ΤελευταίαΤελευταία
Εμφάνιση αποτελεσμάτων : 21 έως 30 από 104

Θέμα: Μεταβλητές σε βιβλιοθήκη C

  1. #21
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.375

    Προεπιλογή

    καμιά ιδέα? πως μπορώ να χρησιμοποιώ τα pin στη βιβλιοθήκη με περιγραφές?
    Πρέπει να γίνονται define στο .h? κάθε φορά?

    .........

    Μόλις βρήκα μια βιβλιοθήκη που κάνει define τα pin στο .h, κάτι είναι και αυτό

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη picdev : 16-01-15 στις 17:59

  2. #22
    Μέλος
    Όνομα
    Άκης
    Εγγραφή
    Jan 2013
    Περιοχή
    Αθήνα
    Μηνύματα
    90

    Προεπιλογή

    Θα προσπαθήσω να τα βάλω σε μια σειρά:

    Τα #define, #include και γενικά ό.τι ξεκινά με # δεν έχουν καμμία σχέση με μεταβλητές ή γενικότερα με τη γλώσσα. Είναι directives του preprocessor. Φαντάσου ότι πριν πάει το αρχείο σου στον compiler ο preprocessor θα το "πετσοκόψει" εκτελώντας τα directives που έχεις ορίσει. Αν έχεις 2 c αρχεία που κάνουν include το π.χ. stdio.h αυτό θα "ταϊστεί" πολλαπλώς στον compiler. Επειδή όμως δεν μπορείς να ορίσεις το ίδιο σύμβολο 2 φορές, στα header συνηθίζεται η extern που λέει: αυτό είναι ένας π.χ. ακέραιος αλλά μην το ορίσεις στο object file μετά το compilation! Θα το βρεις από αλλού! (Ή άλλο c αρχείο ή κάποια βιβλιοθήκη).

    Γενικά τα headers ορίζουν το "τι;" και τα c το "πώς;". Για το λόγο που σου είπα παραπάνω, τα headers των βιβλιοθηκών έχουν extern στις δηλώσεις τους.

    1 Not allowed! Not allowed!

  3. #23
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.375

    Προεπιλογή

    Ωραια μου τα ειπες. Αλλα εχω δει κ ορισμους μεταβλητων σε
    Header. Αυτο τι σκοπο εχει?

    Στάλθηκε από το GT-S6312 μου χρησιμοποιώντας Tapatalk 2

    0 Not allowed! Not allowed!

  4. #24
    Μέλος
    Όνομα
    Άκης
    Εγγραφή
    Jan 2013
    Περιοχή
    Αθήνα
    Μηνύματα
    90

    Προεπιλογή

    Ο σκοπός εξαρτάται από το header. Χωρίς να ξέρω κάτι για αυτό, δεν μπορώ να σου πω γιατί το έκανε. Υποθέτοντας, λοιπόν, μπορώ να σου πω εγώ γιατί θα το έκανα.

    Έχω π.χ. μια βιβλιοθήκη που με κάποιο μαγικό τρόπο διαβάζει τη θερμοκρασία και θέλω να την προσπελάζει ο χρήστης μέσω μιας global μεταβλητής. Την ορίζω σε header ως:

    extern volatile int temperature;

    extern γιατι ορίζεται στη βιβλιοθήκη μου, δεν χρειάζεται να δημιουργήσει άλλο σύμβολο ο compiler στο object file γιατί θα κάνει conflict με αυτό της βιβλιοθήκης. Μην ξεχνάς ότι το header γίνεται include από τον κώδικα του χρήστη.
    volatile γιατί είναι μέγεθος που μπορεί να αλλάξει από κάποιο παράλληλο thread της βιβλιοθήκης και θέλω ο compiler να το διαβάζει όταν χρησιμοποιείται, χωρίς να βασίζεται στην τιμή που έχει ήδη διαβάσει.

    0 Not allowed! Not allowed!

  5. #25
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.561

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από picdev Εμφάνιση μηνυμάτων
    Ωραια μου τα ειπες. Αλλα εχω δει κ ορισμους μεταβλητων σε
    Header. Αυτο τι σκοπο εχει?

    Στάλθηκε από το GT-S6312 μου χρησιμοποιώντας Tapatalk 2
    να δειξει ποσο αρχαριος ηταν ο προγραμματιστης...

    0 Not allowed! Not allowed!

  6. #26
    Μέλος
    Όνομα
    Άκης
    Εγγραφή
    Jan 2013
    Περιοχή
    Αθήνα
    Μηνύματα
    90

    Προεπιλογή

    Παράθεση Αρχικό μήνυμα από klik Εμφάνιση μηνυμάτων
    να δειξει ποσο αρχαριος ηταν ο προγραμματιστης...
    Αυτό εξυπακούεται! Το να χρησιμοποιείς globals, ειδικά για τέτοιους λόγους, είναι κακή τακτική. Αλλά ας μη μπερδεύουμε τον picdev χειρότερα...

    0 Not allowed! Not allowed!

  7. #27
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.375

    Προεπιλογή

    έψαχνα πως μπορώ να φτιάξω βιβλιοθήκες στη mikroc και είναι κάπως περίπλοκο αφού πρέπει να γίνει για κάθε μΕ ξεχωριστά.
    Μία πρόταση σε φόρουμ ήταν να φτιάξεις μονο αρχείο .h , το δοκίμασα με το φίλο μου και δουλεύει, δηλαδή γράφουμε συναρτήσεις με κώδικα στο .h και μετά γίνεται include κανονικά.
    Είναι σωστή πρακτική ?
    άντε κλικ απάντα

    0 Not allowed! Not allowed!
    Τελευταία επεξεργασία από το χρήστη picdev : 21-03-15 στις 12:48

  8. #28
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.561

    Προεπιλογή

    Ναι και οχι.
    Ναί όταν έχεις χαζοπρογράμματα και χαζοcompiler.
    Όχι για όλες τις άλλες περιπτώσεις!

    Μην το κάνεις.

    Θα κάνεις add στο project τα .c αρχεία και θα μεταγλωτίζονται μια φορά μόνο για το κάθε project (επειδή δεν θα έχουν αλλαγές) και άσε τα υπόλοιπα να τα αναλάβει ο compiler και ο linker.
    To include σε κώδικα προβλέπεται πλήρως από τη c99 αλλά και στη c++. (inline συναρτήσεις, multiple instances of vars κλπ Οι inline υπήρχαν και σε παλιότερα πρότυπα βλέπε intrisict).
    Αλλιώς θα έχεις καθυστερήσεις στο compile, δυσκολία στο debug κλπ

    Είσαι σίγουρος ότι πρέπει να ξαναφτιάξεις το lib για κάθε μΕ;
    π.χ. αν σε καλύπτει το p18cxxxx.h (δηλαδή δουλεύεις με p18 διάφορα μΕ) τότε δεν χρειάζεται να ξαναμεταγλωτισεις. Θα αναλάβει ο linker τις συνδέσεις και είσαι έτοιμος.
    Αν θέλεις βέβαια ταυτόχρονα για p18, p24 και p32 ναι, τότε θέλεις ή να κάνεις μεταγλώτιση χωριστά (και να έχεις 3 διαφορετικές βιβλιοθηκες lib18mlib24,lib32) ή να βάλεις τα .c στο project.

    0 Not allowed! Not allowed!

  9. #29
    Μέλος Το avatar του χρήστη picdev
    Όνομα
    akis
    Εγγραφή
    Jul 2007
    Περιοχή
    ____
    Μηνύματα
    7.375

    Προεπιλογή

    απλά είναι ευκολία έτσι , δηλαδή θα έχω πρόβλημα στο compile? παίζει να κάνει τρέλες?
    δυσκολία στο debug γιατί?

    0 Not allowed! Not allowed!

  10. #30
    Μέλος Το avatar του χρήστη klik
    Όνομα
    just a click away
    Εγγραφή
    Oct 2009
    Περιοχή
    Θεσσαλλλονίκη
    Μηνύματα
    2.561

    Προεπιλογή

    Στο debug μπορεί να μπερδεύει γραμμές, να μην μπορεί να κάνει watch μεταβλητές κλπ.
    Γιατί δεν κάνεις add τα .c αρχεία;
    Δες π.χ. το eeprom.c
    xxx1.jpg

    0 Not allowed! Not allowed!

Σελίδα 3 από 11 ΠρώτηΠρώτη 1 2 3 4 5 ... ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Μεταβλητές σε C
    By ds electronics in forum Ερωτήσεις Αρχάριων
    Απαντήσεις: 34
    Τελευταίο Μήνυμα: 22-09-11, 02:51
  2. Μεταβλητός σταθεροποιητής τάσης
    By georgz in forum Εξαρτήματα & Datasheets
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 27-12-10, 19:34
  3. Float μεταβλητές σε GCC
    By Thansavv in forum Software Η/Υ
    Απαντήσεις: 8
    Τελευταίο Μήνυμα: 04-08-10, 09:42
  4. πυκνωτης 2x260 pf μεταβλητός
    By thanos_ in forum Εξαρτήματα & Datasheets
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 17-10-07, 22:53
  5. Πως αναγνωρίζεται ένας μεταβλητός?
    By Giannis511 in forum Εξαρτήματα & Datasheets
    Απαντήσεις: 2
    Τελευταίο Μήνυμα: 25-07-06, 11:17

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας