THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: edenaxas on October 11, 2006, 10:09:15 am



Title: Προβλημα στον(δικο μου) compiler της borland
Post by: edenaxas on October 11, 2006, 10:09:15 am
προσπαθω να γραψω προγραμμα στον compiler Βorland c++ (αυτον που εχει ο κορτεσης στο Site του μαθηματος) και δεν μπορει να αναγνωρισει τις στοιχειωδεις επικεφαλιδες(...iostream,using namespace std κτλ) ετσι μου βγαζει εκατομυρια λαθη καθως δεν αναγνωριζει τιποτα απο οτι γραφω... προγραμματα σε C oμως τα τρεχει.. με την C++ ειναι το προβλημα. μηπως πρεπει να κανω τιποτα περιεργο για να φτιαξει?


Title: Απ: προβλημα στον(δικο μου) compiler της borland
Post by: Καμένος on October 11, 2006, 10:27:23 am
Εμένα τις αναγνωρίζει...

Τις δηλώνεις έτσι:

#include <iostream.h>
???

Επίσης το using namespace std δεν χρειάζεται να μπεί...

Επίσης ένα αρχείο dll που έχει έξτρα το έβαλες στον φάκελο που το εγκατέστησες?? (και συγκεκριμένα στον φάκελο ΒΙΝ?)


Title: Απ: προβλημα στον(δικο μου) compiler της borland
Post by: Καμένος on October 11, 2006, 10:28:42 am
Συγκεκριμένα το αρχείο που πρέπει να προσθέσεις είναι το bwcc.dll και το βάζεις στον φάκελο ΒΙΝ.


Title: Re: προβλημα στον(δικο μου) compiler της borland
Post by: edenaxas on October 11, 2006, 10:46:50 am
απο οσο ξερω το bwcc.dll το προσθετω στον φακελο windows/system και οχι στο bin. να το προσθεσω και στο bin?


Title: Απ: προβλημα στον(δικο μου) compiler της borland
Post by: Καμένος on October 11, 2006, 10:50:49 am
Εγώ μόνο στο ΒΙΝ το έβαλα και δούλευε... δοκίμασέ το...
Εξ'αλλου και στο φάκελο ΒΙΝ έχει αρχεία Dll...


Title: Re: προβλημα στον(δικο μου) compiler της borland
Post by: edenaxas on October 11, 2006, 10:52:47 am
για παραδειγμα στο παρακατω προγραμμα εμφανιζει 11 λαθη αρχιζοντας απο την αδυναμια αναγνωρισης της επικεφαλιδας iostream. και το εβαλα τωρα και παλι δεν το κανει γμτ...

#include <iostream>
#include <ctime>
using namespace std;

int main()
{
  struct tm *ptr;
  time_t lt;

  lt = time('\0');

  ptr = localtime(&lt);
  cout << asctime(ptr);

  return 0;
}


Title: Απ: προβλημα στον(δικο μου) compiler της borland
Post by: Καμένος on October 11, 2006, 10:54:26 am
Ε αφού δεν γράφεις #include <iostream.h>

Οι βιβλιοθήκες δηλώνονται με .h

Επίσης το using namespace std; δεν χρειάζεται...

Διάβασε τι σου έγραψα παραπάνω...


Title: Re: προβλημα στον(δικο μου) compiler της borland
Post by: edenaxas on October 11, 2006, 10:57:15 am
κατσε να δω..


Title: Re: προβλημα στον(δικο μου) compiler της borland
Post by: edenaxas on October 11, 2006, 11:07:14 am
βασικα εχεις δικιο αλλα το θεμα ειναι οτι το προγραμμα αυτο δεν το εγραψα εγω, ηταν στο cd του βιβλιου "Μαθετε την C++ απο την αρχη" στο αρχειο που ειχε αποθηκευμενα σε ηλ. μορφη τα παραδειγματα του βιβλιου.


Title: Re: προβλημα στον(δικο μου) compiler της borland
Post by: Verminoz on October 11, 2006, 11:08:07 am
Μήπως το βιβλίο αυτό σύστηνε την χρήση κάποιοι άλλου compiler?


Title: Απ: προβλημα στον(δικο μου) compiler της borland
Post by: Fuzzee on October 11, 2006, 12:04:32 pm
Το .h βασικά σε άλλους compiler χρειάζετε και σε άλλους δημιουργεί πρόβλημα . Στο Microsoft Visual Studio 2005 για παράδειγμα που έχω εγώ στα προγράμματα της C++ το βγάζει σαν λάθος .


Title: Απ: προβλημα στον(δικο μου) compiler της borland
Post by: Καμένος on October 11, 2006, 15:34:45 pm
Το .h βασικά σε άλλους compiler χρειάζετε και σε άλλους δημιουργεί πρόβλημα . Στο Microsoft Visual Studio 2005 για παράδειγμα που έχω εγώ στα προγράμματα της C++ το βγάζει σαν λάθος .

Όντως, στο VS χρειάζεται να βάλεις using namespace std και τις βιβλιοθήκες χωρίς .h

Aλλά σε αυτόν και στον Borland που είναι σε DOS τα γράφεις έτσι όπως είπα...

Όσο για τα παραδείγματα του βιβλίου... τι να πώ???


Title: deleted
Post by: BOBoMASTORAS on October 11, 2006, 16:05:18 pm
deleted


Title: Re: προβλημα στον(δικο μου) compiler της borland
Post by: Megawatt on October 11, 2006, 20:43:29 pm
βασικα εχεις δικιο αλλα το θεμα ειναι οτι το προγραμμα αυτο δεν το εγραψα εγω, ηταν στο cd του βιβλιου "Μαθετε την C++ απο την αρχη" στο αρχειο που ειχε αποθηκευμενα σε ηλ. μορφη τα παραδειγματα του βιβλιου.
BOB ΤΙ ΑΠΑΝΤΗΣΕΙΣ ΕΙΝΑΙ ΑΥΤΕΣ ΠΟΥ ΔΙΝΕΙΣ??? ΔΕΝ ΣΕ ΑΝΑΓΝΩΡΙΖΩ! ;D
ΑΠΟ ΣΕΝΑ ΠΕΡΙΜΕΝΑ ΚΑΤΙ ΤΕΤΟΙΟ:


Όταν πρωτοπαρουσιάστηκε η C++ και για αρκετά χρόνια μετά, χρησιμοποιούσε το ίδιο στυλ επικεφαλίδων αρχείων με την C. Στην πραγματικότητα, η Στάνταρ C++ συνεχίζει να υποστηρίζει header αρχεία με το στυλ της C, για λόγους προς τα πίσω συμβατότητας. Ωστόσο η στάνταρ C++ έχει παρουσιάσει ένα νέο είδος header , το οποίο χρησιμοποιείται από την βιβλιοθήκη της στάνταρ C++. Τα headers με το νέο στυλ δεν καθορίζουν ονόματα αρχείων. Αντίθετα, καθορίζουν απλώς σατάνταρ ονόματα (ταυτότητες) τα οποία μπορούν να αντιστοιχίζονται σε αρχεία από τον μεταγλωτιστή. Τα νέου στυλ headers της C++ είναι "αφαιρετικές δομές" οι οποίες εγγυόνται απλώς ότι έχουν δηλωθεί τα κατάλληλα πρωτότυπα (prototypes) και οι ορισμοί (definitions) που απαιτούνται από την βιβλιοθήκη της C++.

Δεδομένου ότι αυτά τα νέου στυλ headers δεν είναι υποχρεωτικό να αντιστοιχούν σε ένα όνομα αρχείου, δεν φέρουν την επέκταση '.h' .   Ένα τέτοιο header αποτελείται αποκλειστικά και μόνο από ένα όνομα το οποίο αναφέρεται ανάμεσα στα σύμβολα < και >. πχ <iostream>

Επειδή η C++ περιλαμβάνει ολόκληρη την βιβλιοθήκη συναρτήσεων της C, συνεχίζει να υποστηρίζει τα παλαιού στυλ header αρχεία της C.

Όταν περιλαμβάνεις ένα νέου στυλ header στο πρόγραμμα σου, τα περιεχόμενα του header εμπεριέχονται μέσα στο χώρο ονομάτων std. Ένας χώρος ονομάτων (namespace) είναι απλώς μια περιοχή δηλώσεων. Ο σκοπός ενός χώρου ονομάτων είναι ο περιορισμός του εύρους των ονομάτων σε τοπικό επίπεδο για να αποφεύγονται οι συγκρούσεις μεταξύ ονομάτων. Κατα παράδοση, τα ονόματα των συναρτήσεων βιβλιοθήκης και άλλων τέτοιων στοιχείων τοποθετούνταν απλώς στον γενικό χώρο ονομάτων(όπως ισχύει και στην C). Ωστόσο τα περιεχόμενα των νέου στυλ headers τοποθετούνται στον χώρο ονομάτων std. Για το μάθημα αυτό δεν χρειάζεται να προβληματιστείς με αυτούς, επειδή μπορείς να χρησιμοποιείς την εντολή "using namespace std" για να καθιστάς ορατό τον χώρο ονομάτων std στο πρόγραμμα σου (δλδ για να τοποθετήσεις τον χώρο std στον γενικό χώρο ονομάτων). Αφού μεταγλωτιστεί η παραπάνω γραμμή κώδικα, δεν υπάρχει πλέον διαφορά μεταξύ headers παλαιού και νέου στυλ.

Επειδή τόσο οι χώροι ονομάτων όσο και τα νέου στυλ headers είναι πρόσφατες προσθήκες στην γλώσσα C++, είναι πολύ πιθανό να μην υποστηρίζονται από παλαιότερους μεταγλωτιστές.(πχ Borland) Η λύση στο πρόβλημα είναι η χρησιμοποίηση του παλαιού στυλ header. Έτσι , τα "μοντέρνα" πρόγραμματα των παραδειγμάτων του βιβλίου, μετασχηματίζονται σε πιο "παραδοσιακά" προγράμματα.

ΟΜΩΣ, θα πρέπει να μάθεις το μοντέρνο στυλ, επειδή είναι το μόνο στυλ γραφής κώδικα που συμμορφώνεται με τις προδιαγραφές της Στάνταρ C++. Αν και τα παλαιού στυλ προγράμματα θα συνεχίζουν να υποστηρίζονται για αρκετά χρόνια, από τεχνικής άποψης δεν είναι απόλυτα συμβατά.


Title: deleted
Post by: BOBoMASTORAS on October 12, 2006, 00:10:15 am
deleted


Title: Re: προβλημα στον(δικο μου) compiler της borland
Post by: Megawatt on October 12, 2006, 00:27:16 am
Μα, πρέπει να κοιτάς στο παρελθόν για να πορευθείς στο μέλλον!  ^ytold^  ;D
Πώς θα γίνει αλλιώς?  ::)