C: segmentation fault κατα την δηλωση pointer

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Re: C: segmentation fault κατα την δηλωση pointer

Δημοσίευσηαπό migf1 » 24 Ιούλ 2011, 19:52

Garrus έγραψε:Ευχαριστω πολυ παιδες!
Τζιζους migf1, δεν χρειαζοταν/ζητησα να ξαναγραψεις ολο τον κωδικα μου... ελπιζω να το εκανες ευχαριστα/για να περασει η ωρα.

Εννοείται! :)
(δεν τον ξανάγραψα από την αρχή βρε συ, τον δικό σου αραίωσα ;) )

έγραψε:
Ερωτησεις:

-Γιατι προτιμαται η δομη σε main.c , header.c , header.h?

Οι ονομασίες είναι τυχαίες προφανώς, μπορείς να τα ονομάσεις όπως θέλεις τα αρχεία σου. Είθισται όμως σε προγράμματα με πολλά αρχεία πηγαίου κώδικα αυτό που περιέχει τη συνάρτηση main() να ονομάζεται: main.c. Είναι καλό επίσης τα υπόλοιπα αρχεία να είναι όσο το δυνατόν πιο εξειδικευμένα σε μια δουλειά, για αυτό σου πρότεινα να βγάλεις από το: queue.c συναρτήσεις που δεν άπτονται άμεσα με τη διαχείριση της ουράς (αλλά φυσικά είναι προαιρετικό, δικό σου είναι το πρόγραμμα το κάνεις όπως θέλεις ;) )

έγραψε:Νομιζα οτι τα .h ειναι γενικα τα "συμπληρωματικα" ως προς το .c που περιεχει την main σου.

Στα header files (.h) συνήθως ορίζουμε πρόσθετους τύπους, σταθερές, δομές δεδομένων, κλπ τα οποία σκοπεύουμε να τα χρησιμοποιήσουμε σε περισσότερα του ενός .c αρχεία. Οπότε σε αυτά τα .c αρχεία θα κάνουμε #include το .h αρχείο

έγραψε:
έγραψε:στις void συναρτήσεις βάζε ένα σκέτο: return; πριν της τερματίσεις, όπως επίσης βάζε void ανάμεσα σττις παρενθέσεις όταν ορίζεις συναρτήσεις που δεν παίρνουν ορίσματα (στα έχω φτιάξει αυτά στον παραπάνω κώδικα).

Γιατι ομως;

Γιατί έτσι ορίζουν όλες οι αναθεωρήσεις της γλώσσας (C89 και C99) μετά από την αρχική της έκδοση (την K&R). Βοηθάει πολύ στο debugging και στο ευανάγνωστο του κώδικα (είτε από σένα είτε από άλλους που ενδεχομένως κληθούν να διαβάσουν τον κώδικά σου). Βοηθάει επισης και τους compilers να σου δίνουν πιο σαφή error messages ή/και warnings.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: C: segmentation fault κατα την δηλωση pointer

Δημοσίευσηαπό Garrus » 25 Ιούλ 2011, 14:11

My infinite thanks.
1 Γνώσεις Linux: Ελπίζω τουλ. μέτρια ┃ Προγραμματισμού: Καλή ┃ Αγγλικών: Very best englands
2 Ubuntu 15.10 wily 64bit (en_US.UTF-8),
3 Intel Core i5-3210M CPU @ 2.50GHz ‖ RAM 3843 MiB ‖ SAMSUNG ELECTRONICS CO., LTD. NP350E5C-S03GR [...]
4 Intel 3rd Gen Core processor Graphics Controller [8086:0166] (rev 09) ⋮ [AMD/ATI] Thames [Radeon HD 7500M/7600M Series] [1002:6840] (rev ff)
5 enp2s0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 09) ⋮ wlp3s0: Qualcomm Atheros AR9485 Wireless Network Adapter [168c:0032] (rev 01)
Garrus
punkTUX
punkTUX
 
Δημοσιεύσεις: 179
Εγγραφή: 26 Ιαν 2011, 03:23
Εκτύπωση

Re: C: segmentation fault κατα την δηλωση pointer

Δημοσίευσηαπό pc_magas » 25 Ιούλ 2011, 17:11

@ garus
Εγώ σου εξηγώ αναλυτικά πως θα το σπάς
Αυτό το κάνουμε να σπάμε τα αρχεία σε .c και .h
Στα .h Κάλλιστα μπορείς να δεις τι συναρτήσεις έχεις κάνει χωρίς πολλά πολλά.
Ακόμα κάνεις ποιο εύκολο debugging άλλο να έχεις να κάνεις debug σε 1000 γραμμές κώδικα και άλλο σε 100 ;)

Ακόμα στην θέση του main.c μπορείς να βάλεις όποιο όνομα θες.
My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2599
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση

Προηγούμενη

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι