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

Απορία για VC++


billxl

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

Δημοσ.

Καλησπέρα. Σήμερα ξεκίνησα να μάθω C++ από βιβλίο. Για να εφαρμόσεις αυτά που λέει το βιβλίο χρειάζεται ένας compiler φυσικά. Εγώ κατέβασα το Visual C++ Express 2010. Μετά από ψάξιμο κατάφερα να εκτελέσω κάπως το πρώτο προγραμματάκι του βιβλίου. Το πρόβλημα είναι ότι όταν εκτελώ το executable ανοίγει και κλείνει ακαριαία ένα comand prompt παράθυρο χωρίς να προλάβω να δω το αποτέλεσμα. Πως γίνεται να παραμείνει το παράθυρο ανοικτό;

 

(Ξέρω ότι είναι ηλήθια ερώτηση, αλλά αν δεν μπωρώ να χειριστώ στοιχειωδώς τον compiler δεν πρόκειται να μάθω τίποτε.)

  • Απαντ. 42
  • Δημ.
  • Τελ. απάντηση
Δημοσ.

Χε... καλή φάση! :) Μου θύμισε την δική μου πρώτη φορά με το "Hello World" (-"Ε, τι; Πού πήγε το παράθυρο; " ).

 

Αυτό που γίνεται και δεν βλέπεις τίποτα, είναι επειδή τελειώνει αυτό που είπες να κάνει στην main και η κονσόλα κλείνει.

 

Έτσι, για να μείνει ανοικτή, πρέπει να το πεις εσύ. Ένας από τους τρόπους είναι αυτός που σου έδειξε ο παπί, με breakpoint (αν και εγώ δεν συμφωνώ με αυτόν τον τρόπο.. στην παρούσα φάση :P )

 

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

 

Ένας άλλος είναι με την εντολή SYSTEM("PAUSE");

 

Αυτά!

 

 

Καλή αρχή!

Δημοσ.

No worries!

 

Υ.Γ. Επίσης, μιας που είσαι στην αρχή, θα σου πρότεινα να φτιάξεις μία function δική σου η οποία να κάνει αυτό ακριβώς που θες. Να περιμένει για είσοδο για να προχωρήσει. Θα την καλείς όποτε θες για να μπεις σε αναμονή. Ψαξ' το. ;)

Δημοσ.

κανω λαθος η ο "πιο-σωστος"* τροπος ειναι να ανοιξει ενα νεο CMD και να τρεχει τα προγραμματα του απο 'κει ?

 

*φυσικα δεν υπαρχουν κανονες αλλα τα πλεονεκτηματα ειναι πολλα , οπως command line parameters

Δημοσ.

Υπάρχουν τόσοι πολλοί τρόποι να κρατήσει ανοιχτό το παράθυρο, και τόσοι υπέρμαχοι για κάθε λύση που δεν αντέχεται άλλο ένα θέμα για το τι είναι σωστό (προκαταβολικά)...!!! :P

Εφαρμογές κονσόλας σε πραγματική εφαρμογή δεν θα φτιάξεις σχεδόν ποτέ ή και να φτιάξεις θα κλείνει η κονσόλα μόλις τερματίζει συνήθως, οπότε βρες έναν εύκολο για εσένα τρόπο να την κρατάς ανοιχτή (όπως το break point ή το SYSTEM("PAUSE"); ή το cin.get(); ) και θα είσαι μια χαρά.

 

 

κανω λαθος η ο "πιο-σωστος"* τροπος ειναι να ανοιξει ενα νεο CMD και να τρεχει τα προγραμματα του απο 'κει ?

 

*φυσικα δεν υπαρχουν κανονες αλλα τα πλεονεκτηματα ειναι πολλα , οπως command line parameters

 

Command line parameters μπορείς να δώσεις μέσα από το VS κατευθείαν, δεν χρειάζεσαι κονσόλα ;)

Δημοσ.

...

Εφαρμογές κονσόλας σε πραγματική εφαρμογή δεν θα φτιάξεις σχεδόν ποτέ ή και να φτιάξεις θα κλείνει η κονσόλα μόλις τερματίζει συνήθως

...

Ακόμα κι αν τύχει να ασχοληθεί με unix/linux; Εκεί η κονσόλα "μετράει" ;)

Δημοσ.

Ακόμα κι αν τύχει να ασχοληθεί με unix/linux; Εκεί η κονσόλα "μετράει" ;)

 

Μόλις λίγο πριν έφτιαξα το "Hello world!" για κονσόλα με το VS 8 επειδή το SP3 δεν μπορεσα να το εγκαταστήσω για να ολοκληρώσω και την εγκατάσταση του VS 10 express. Τώρα αυτό το hello.exe θα λειτουργεί σε όλα τα computers ή απαιτούνται και άλλα αρχεία;

Δημοσ.

Μόλις λίγο πριν έφτιαξα το "Hello world!" για κονσόλα με το VS 8 επειδή το SP3 δεν μπορεσα να το εγκαταστήσω για να ολοκληρώσω και την εγκατάσταση του VS 10 express. Τώρα αυτό το hello.exe θα λειτουργεί σε όλα τα computers ή απαιτούνται και άλλα αρχεία;

Δεν έχει να κάνει με το αν είναι σε κονσόλα ή όχι. Το εκτελέσιμο αρχείο που παράγεται τρέχει μόνο σε όσους υπολογιστές έχουν το ίδιο λειτουργικό σύστημα με σένα. Στα υπόλοιπα θα πρέπει να κάνεις compile ξανά τον πηγαίο κώδικα ώστε να παραχθεί νέο εκτελέσιμο αρχείο για εκείνο το λειτουργικό.

Δημοσ.

Μόλις λίγο πριν έφτιαξα το "Hello world!" για κονσόλα με το VS 8 επειδή το SP3 δεν μπορεσα να το εγκαταστήσω για να ολοκληρώσω και την εγκατάσταση του VS 10 express. Τώρα αυτό το hello.exe θα λειτουργεί σε όλα τα computers ή απαιτούνται και άλλα αρχεία;

Nop. Θελει CRT. Μπορεις να την ενσωματωσεις ( project properies / config properties / C++ / code generation/ runtime library σεταρεις σε multi-threaded (MT) )

Δημοσ.

Ευχαριστώ για τη βοήθεια. Προς το παρόν το breakpoint με βόλεψε.

 

Βλέπετε ωραία η εκμάθηση της γλώσσας, αλλά τα βιβλία δεν λένε τίποτε για τους compilers ή αν λένε, μπορεί να είναι παλιοί και να μην ισχύουν αυτά για τους καινούργιους. Συνεπώς για έναν εντελώς αρχάριο αυτό είναι ένας πονοκέφαλος και λόγος εγκατάληψης της προσπάθειας. Που είναι οι παλιοί καιροί που άνοιγες τον C64 και μπορούσες απ' ευθείας να προγραμματίσεις, τώρα οι ίδιοι οι compilers θέλουν δικό τους βιβλίο για εκμάθηση.

Δημοσ.

Ευχαριστώ για τη βοήθεια. Προς το παρόν το breakpoint με βόλεψε.

 

Βλέπετε ωραία η εκμάθηση της γλώσσας, αλλά τα βιβλία δεν λένε τίποτε για τους compilers ή αν λένε, μπορεί να είναι παλιοί και να μην ισχύουν αυτά για τους καινούργιους. Συνεπώς για έναν εντελώς αρχάριο αυτό είναι ένας πονοκέφαλος και λόγος εγκατάληψης της προσπάθειας. Που είναι οι παλιοί καιροί που άνοιγες τον C64 και μπορούσες απ' ευθείας να προγραμματίσεις, τώρα οι ίδιοι οι compilers θέλουν δικό τους βιβλίο για εκμάθηση.

 

 

Επιμένω να δοκιμάσεις το

 

SYSTEM("PAUSE");

 

και το

 

cin.get();

 

 

ή το ένα ή το άλλο θα έχεις αλλά δοκίμασε και με τα δύο.

 

 

Δοκίμασέ το. Να μάθεις πώς μπορείς να το κάνεις χωρίς να βασίζεσαι στον debugger.

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

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

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