CtrlFreak Δημοσ. 22 Φεβρουαρίου 2014 Δημοσ. 22 Φεβρουαρίου 2014 Καλησπέρα, καθώς μεγαλώνει ένα πρόγραμμα πως το χωρίζεις ώστε να είναι πιο εύκολα μεταχειρίσιμο? Πρέπει όλα τα κομμάτια του κώδικα που είναι εκτός της main και σε άλλο αρχείο (C αρχείο) να είναι μέσα σε συνάρτηση και γω να την καλώ? Πχ έχω ένα αρχείο main και θέλω να κάνω κάποιες αρχικοποιήσεις. Θέλω αυτές να είναι σε άλλο αρχείο, να τις βάλω σε συνάρτηση και από την main να τις καλώ?
gon1332 Δημοσ. 22 Φεβρουαρίου 2014 Δημοσ. 22 Φεβρουαρίου 2014 Καλησπέρα, καθώς μεγαλώνει ένα πρόγραμμα πως το χωρίζεις ώστε να είναι πιο εύκολα μεταχειρίσιμο? Πρέπει όλα τα κομμάτια του κώδικα που είναι εκτός της main και σε άλλο αρχείο (C αρχείο) να είναι μέσα σε συνάρτηση και γω να την καλώ? Πχ έχω ένα αρχείο main και θέλω να κάνω κάποιες αρχικοποιήσεις. Θέλω αυτές να είναι σε άλλο αρχείο, να τις βάλω σε συνάρτηση και από την main να τις καλώ? Θα υλοποιήσεις τις συναρτήσεις σου σε άλλο αρχείο .c, θα τις δηλώσεις σε ένα αρχείο .h, το οποίο θα κάνεις include στο αρχείο main.c Επίσης ρίξε μία ματιά σε αυτά τα links γιατί θα σου χρειαστoύν αργά ή γρήγορα: http://stackoverflow.com/questions/1433204/how-do-i-share-a-variable-between-source-files-in-c-with-extern-but-how/1433387#1433387 http://stackoverflow.com/questions/856636/effects-of-the-extern-keyword-on-c-functions
CtrlFreak Δημοσ. 22 Φεβρουαρίου 2014 Μέλος Δημοσ. 22 Φεβρουαρίου 2014 Δηλαδή θα υπάρξουν συναρτήσεις. Ακόμα και αν πχ δηλώσω global variables που θα ήταν έξω από την main όπως και να έχει τώρα που θα μπουν σε άλλου αρχείο θα πρέπει να εκτελούνται μέσω της main. Θα πρέπει να μπούνε σε c αρχείο όχι σε h.
Star_Light Δημοσ. 22 Φεβρουαρίου 2014 Δημοσ. 22 Φεβρουαρίου 2014 Δηλαδή θα υπάρξουν συναρτήσεις. Ακόμα και αν πχ δηλώσω global variables που θα ήταν έξω από την main όπως και να έχει τώρα που θα μπουν σε άλλου αρχείο θα πρέπει να εκτελούνται μέσω της main. Θα πρέπει να μπούνε σε c αρχείο όχι σε h. Σπάσε το προγραμμα σε 3 αρχεια. Ένα που θα περιέχει την main που θα καλεί τις συναρτήσεις. Ένα ακομα που θα ειναι header *.h και θα περιέχει τους ορισμους των συναρτήσεων και κάποιες εξωτερικες μεταβλητές και τέλος ένα ακομα αρχείο *.c που θα περιέχει τον ορισμο των συναρτήσεων ονομασε το αναλογα με την λειτουργια τους ωστε να υπάρχει μια συνοχη. Πχ αν οι συναρτήσεις υλοποιουν λειτουργιες για μια στοιβα ονομασε το stack.c πιστευω αυτη η οργάνωση ειναι εντάξει.
gon1332 Δημοσ. 22 Φεβρουαρίου 2014 Δημοσ. 22 Φεβρουαρίου 2014 Δηλαδή θα υπάρξουν συναρτήσεις. Ακόμα και αν πχ δηλώσω global variables που θα ήταν έξω από την main όπως και να έχει τώρα που θα μπουν σε άλλου αρχείο θα πρέπει να εκτελούνται μέσω της main. Θα πρέπει να μπούνε σε c αρχείο όχι σε h. Οι global vars θα είναι δηλωμένες εκτός συναρτήσεων εννοείται. Μπορείς να τις δηλώσεις σε κάποιο άλλο αρχείο και να τις χρησιμοποιήσεις στη main. Οι δηλώσεις των συναρτήσεων και των global μεταβλητών και των structs πχ θα ήταν καλό να είναι δηλωμένα σε ένα header file. Μόνο τις υλοποιήσεις των συναρτήσεων θα έχεις σε κάποιο .c file. /******* main.c *****/ include <stdio.h> include "my_lib.h" int main (void) { printf("%d\n", my_fun(25)); return(0); } /*******************/ /***** my_lib.h ****/ int my_fun (int magic_num); /*******************/ /*** magic_lib.c ***/ int my_fun (int magic_num) { return(1 + (0xffffffff ^ magic_num)); } /*******************/
παπι Δημοσ. 22 Φεβρουαρίου 2014 Δημοσ. 22 Φεβρουαρίου 2014 Οι δηλώσεις των συναρτήσεων και των global μεταβλητών και των structs πχ θα ήταν καλό να είναι δηλωμένα σε ένα header file. Μόνο τις υλοποιήσεις των συναρτήσεων θα έχεις σε κάποιο .c file. Ποτε μα ποτε δεν βαζουμε definition σε header.
Moderators Kercyn Δημοσ. 22 Φεβρουαρίου 2014 Moderators Δημοσ. 22 Φεβρουαρίου 2014 Ποτε μα ποτε δεν βαζουμε definition σε header. Δεν μίλησε για definitions. 2
gon1332 Δημοσ. 23 Φεβρουαρίου 2014 Δημοσ. 23 Φεβρουαρίου 2014 Ποτε μα ποτε δεν βαζουμε definition σε header. Declarations. Γι' αυτό και στα header files, καλό οι global μεταβλητές είναι να δηλώνονται ως extern. Έτσι αποτρέπει κανείς το definition. Γίνονται μόνο declare. Έπειτα σε κάποιο source .c, μπορεί κανείς να τις κάνει define. Δηλαδή: /*** libs.h ***/ extern int counter; // Declaration only on x /**************/ /*** main.c ***/ include "libs.h" int counter = 0; // Definition of x, declared in libs.h return(0); /**************/ 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα