Προς το περιεχόμενο

compiler c gia windows


yorgosd

Προτεινόμενες αναρτήσεις

Δημοσ.

dev-cpp,c-free 3.5 ->MinGW

codeblocks -> o default compiler einai o gcc alla ypostirizei kai alloys 6-7

ta programmata ayta einai IDE kai oxi compilers..apla parexontai mazi me compiler..

Δημοσ.

ok...euxaristo paidia...katevasa to dev c++ kai einai arketa kalo....exei ena bug me to run vevaia....kai se sas auto simvainei??an den valo run to cursor tote to trexei kai to termatixei mono tou...den prolavaino na do apotelesmata...

Δημοσ.
ok...euxaristo paidia...katevasa to dev c++ kai einai arketa kalo....exei ena bug me to run vevaia....kai se sas auto simvainei??an den valo run to cursor tote to trexei kai to termatixei mono tou...den prolavaino na do apotelesmata...

 

Μία μικρή συμβουλή:

 

1) Κάνε compile τα προγράμματά σου με τις επιλογές: -W -Wall -pedantic -ansi test.c

2) Αν θέλεις το πρόγραμμά σου να "περιμένει" να πατήσεις <Enter> πριν κλείσει, γράψε getchar(); πριν το return 0.

Δημοσ.

2) Αν θέλεις το πρόγραμμά σου να "περιμένει" να πατήσεις <Enter> πριν κλείσει' date=' γράψε getchar(); πριν το return 0.[/quote']

 

Ασχολούμαι με προγραμματισμό σε C σε περιβάλλον Unix και μια φορά που δοκίμασα σε Windows με το Dev-C++, με ενόχλησε ιδιαίτερα αυτό το πράγμα. Δηλαδή δεν υπάρχει μια σταθερή κονσόλα όπου επιστρέφει μόλις κλείσει το πρόγραμμα; (όπως π.χ. έχει το Eclipse που είναι κυρίως Java IDE)

 

Η λύση του getchar() ή του system("pause") είναι αρκετά απλή όμως δεν είναι καθόλου χρηστικό και προσωπικά με ενοχλεί σαν ιδέα να πρέπει κάθε μα κάθε φορά να προσθέτω αυτό το "περίμενε". Και σε περιπτώσεις που το πρόγραμμα επιστρέφει από περισσότερα σημεία (και όχι μόνο από την main()) τι θα πρέπει να κάνουμε;

 

Ελπίζω να υπάρχει κάποιο σχετικό option στο Dev-C++ και να έγραψα άδικα τα παραπάνω :P

Δημοσ.
Ασχολούμαι με προγραμματισμό σε C σε περιβάλλον Unix και μια φορά που δοκίμασα σε Windows με το Dev-C++' date=' με ενόχλησε ιδιαίτερα αυτό το πράγμα. Δηλαδή δεν υπάρχει μια σταθερή κονσόλα όπου επιστρέφει μόλις κλείσει το πρόγραμμα; (όπως π.χ. έχει το Eclipse που είναι κυρίως Java IDE)

 

Η λύση του getchar() ή του system("pause") είναι αρκετά απλή όμως δεν είναι καθόλου χρηστικό και προσωπικά με ενοχλεί σαν ιδέα να πρέπει κάθε μα κάθε φορά να προσθέτω αυτό το "περίμενε". Και σε περιπτώσεις που το πρόγραμμα επιστρέφει από περισσότερα σημεία (και όχι μόνο από την main()) τι θα πρέπει να κάνουμε;

 

Ελπίζω να υπάρχει κάποιο σχετικό option στο Dev-C++ και να έγραψα άδικα τα παραπάνω :P[/quote']

 

Δυστυχώς δε νομίζω ότι υπάρχει κάποια επιλογή μέσα από αυτό το IDE. Έχεις βέβαια τη λύση να ανοίξεις κανονικά μία κονσόλα dos και να τρέχεις τα προγράμματά σου από εκει. Επίσης, ίσως μπορείς να ορίσεις μία macro ως εξής:

 

>
#define return(i) getchar();return i

 

και εκεί που θέλεις το πρόγραμμα να περιμένει να δίνεις π.χ.: return(0) ενώ εκεί που θέλεις να επιστέφει να δίνεις return 0; Κάτι ανάλογο ίδιο μπορείς να κάνεις και για την exit(), π.χ.:

 

>
#define exit(i) getchar(); exit(i)

 

Για να επιστρέψει το πρόγραμμά σου απευθείας χωρίς να επεκταθεί η προηγούμενη macro μπορείς να χρησιμοποιήσεις π.χ. το εξής: (exit)(0).

 

Σε περίπτωση που μεταφέρεις τον κώδικά σου μεταξύ διαφορετικών compilers μπορείς να κάνεις το παρακάτω π.χ. για την πρώτη περίπτωση:

 

>
#ifdef DEVCPP
#define return(i) getchar();return i
#endif

 

και να συμπεριλάβεις τον παραπάνω κώδικα σε κάποιo custom header file που είναι included από όλα τα αρχεία σου. Επίσης, στα Tools->Compiler options στο Dev-C++ ορίζεις την επιλογή: -DDEVCPP ώστε να είναι ορισμένο το DEVCPP. Στους υπόλοιπους compilers που μεταφέρεις το πρόγραμμά σου δεν είναι ορισμένο το DEVCPP και έτσι δεν ορίζεται και η macro.

Δημοσ.

Αντί για το #define που προτείνει ο Sta, μπορείς να χρησιμοποιήσεις και την atexit(getchar()) ώστε να καλείται η getchar απ' οπουδήποτε κι αν κληθούν οι return/exit κτλ.

 

Επίσης νομίζω ότι μπορείς να ρυθμίσεις τα Windows (όχι το devcpp) ώστε να μην κλείνουν τα προγράμματα κονσόλας, αλλά δεν έχω πρόχειρο link για το σχετικό πείραγμα του registry.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...