====== C++ ====== Για την ανάπτυξη εφαρμογών σε C++ θα χρησιμοποιήσουμε το γενικό περιβάλλον ανάπτυξης eclipse και το plugin CDT που αφορά C++ =====Eclipse για C++ - Εγκατάσταση===== ==== Windows XP==== Θα εγκαταστήσουμε *Το περιβάλλον ανάπτυξης **Eclipse** (http://www.eclipse.org/) *Από το **MinGW project** (http://www.mingw.org/) εκδόσεις για windows του **gcc** compiler,gnu utilities και τον **gdb** (για compilation, linking, χρήση makefile και debugging) Ας δούμε τα βήματα ένα ένα: -Εγκατάσταση JavaRuntimeEnvironment (http://java.sun.com/javase/) - αρχείο jre/jre-6u1-windows-i586-p.exe -Εγκατάσταση gcc Gnu C++ compiler-linker - αρχείο gcc-gdb/MinGW-5.1.3.exe * Επιλέγουμε g++ compiler και mingw make -Εγκατάσταση gdb Gnu Debugger - αρχείο gcc-gdb/gdb-5.2.1-1.exe -Προσθήκη φακέλου στην μεταβλητή περιβάλλοντος path. *Πίνακας Ελέγχου/Σύστημα/Για Προχωρημένους/Μεταβλητές περιβάλλοντος - Μεταβλητές Συστήματος, προσθήκη ;c:\minGW\bin στο τέλος της path *Στην συνέχεια ανοίγουμε γραμμή εντολών (Έναρξη/Προγράμματα/Βοηθήματα) για να ελέγξουμε * gcc -v * gdb -v -Αποσυμπίεση eclipse περιβάλλοντος (αρχείο eclipse\eclipse-SDK-3.2.2-win32.zip) στο C:\. (Θα δημιουργηθεί ο φάκελος C:\Eclipse) -Αποσυμπίεση CDT eclipse plugin (αρχείο eclipse\org.eclipse.cdt-3.1.2-win32.x86.zip) στο C:\, για C++ στο eclipse. -Βρίσκουμε το εκτελέσιμο C:\eclipse\eclipse.exe και δημιουργούμε συντόμευση στην επιφάνεια εργασίας ==== Linux ==== Εγκατάσταση JavaRuntimeEnvironment (http://java.sun.com/javase/) aptitude install sun-java6-jre Εγκατάσταση περιβάλλοντος ανάπτυξης **Eclipse** (http://www.eclipse.org/) aptitude install eclipse -r Εγκατάσταση CDT eclipse plugin για C++ στο eclipse. aptitude install eclipse-cdt ===== Eclipse project ===== ΟΙ οδηγίες αφορούν eclipse 3.2.2 και CDT plugin 3.1.2. ((Αν σε νεότερες εκδόσεις βρεθούν να υπάρχουν διαφορές στα μενού ακολουθήστε την λογική των ενεργειών)) ====Δημιουργία νέου project ==== -File/New/Project/C++/Managed Make C++ Project -Ορίζουμε ένα φάκελο για τα project μας π.χ. C:/cpp, τσεκάρουμε το use default και επιλέγουμε όνομα π.χ. myprog -Απαντάμε θετικά στο να ανοίξει το C/C++ Perspective -Δεξί κλικ στο myprog, new/source file και επιλέγουμε όνομα main.cpp -Εισάγουμε τον παρακάτω κώδικα στο main.cpp #include using namespace std; int main() { cout << "Hello World!\n"; return 0; } ====Μεταγλώτισση ==== Αν χρησιμοποιούμε το mingw (windows μόνο) χρειάζεται να κάνουμε τις παρακάτω ρυθμίσεις για να ορίσουμε μεταγλωττιστή - Δεξί κλικ στο myprog, properties/"C/C++ Build"/Build Settings/ (στο configuration debug) *Στην καρτέλα configuration settings Build Settings * Ξετσεκάρουμε το use default command *Αλλάζουμε το make -k σε mingw32-make -k *Ομοίως για το configuration release Εάν είναι επιλεγμένο το build automatically στο μενού project η μεταγγλώτιση θα γίνει αυτόματα κατά την εκτέλεση (από το μενού Run επιλέγωντας Run). Αν δεν είναι επιλεγμένη η αυτόματη μεταγγλώτισση * Δεξί κλικ στο myprog, Active Build Configuration/Debug * Δεξί κλικ στο myprog Build Project ====Εκτέλεση==== ===Εκτέλεση εσωτερικά στο Eclipse=== -Δεξι κλικ στο myprog Run As/Run -Δεξι κλικ στο C/C++ Local Application και επιλογή New -Στο C/C++ Application, από το κουμπάκι Search Project επιλέγουμε myprog (αν δεν είναι ήδη επιλεγμένο το Debug/prog) -Πατάμε Apply και Run -Στην καρτέλα console βλέπουμε τα αποτελέσματα ===Eκτέλεση εξωτερικά από την γραμμή εντολών=== Από την γραμμή εντολών μεταφερόμαστε στον φάκελο που έχει δημιουργηθεί το εκτελέσιμο και το εκτελούμε, π.χ. cd c:\cpp\myprog\Debug myprog ====Αποσφαλμάττωση - Debugging==== -Δεξί κλικ στο myprog, επιλέγουμε Debug As/Debug -Από το Debugger/gdb command set αλλάζουμε το cygwin Και επιλέγουμε standard Windows -Πατάμε apply και στην συνέχεια debug -Απαντάμε θετικά στο να ανοίξει το Debug Perspective -Με F6 εκτελούμε βηματικά, με F5 μπαίνουμε σε συναρτήσεις κτλ -Μετά το τέλος από το κουμπάκι πάνω δεξία ή από το Window/Open Perspective C++ γυρνάμε στην κανονική προβολή =====Συμβατότητα - Windows - Linux ===== Κάποιες βιβλιοθήκες είναι διαθέσιμες μόνο για windows και κάποιες άλλες για Linux. Θα χρησιμοποιήσουμε ένα αρχείο compat.cpp στο οποίο θα υλοποιούμε συναρτήσεις με συμβατό τρόπο και για τα 2 λειτουργικά και ένα compat.h στο οποίο μεταξύ άλλων θα ορίζουμε το λειτουργικό στο οποίο δημιουργούμε εκτελέσιμο - conio.h (μόνο σε windows) * gotoxy(). Αντί για κλήσεις σε gotoxy() και cout, printf, ορίζουμε μια νέα διαδικασία xyprintf (σύμφωνα με την πρόταση που βρέθηκε [[http://www.programmersheaven.com/mb/CandCPP/129920/129920/readmessage.aspx|εδώ]] * random(int maxnum). Χρήση της ANSI rand με το mod * num=random(5); σε num = rand() % 5; (0..4) * randomize(). Χρήση της ANSI srand * randomize(); σε srand(100); *MFC Visual C++ Εφαρμογές και μετατροπή σε linux *http://www.ibm.com/developerworks/linux/library/l-mfc/ ====ncurses - Κονσόλα και Linux==== http://heather.cs.ucdavis.edu/~matloff/UnixAndC/CLanguage/Curses.pdf aptitude install libncurses5-dev Στην αρχή των προγραμμάτων #include Δεξί κλικ στο project/properties/GCC C++ Linker/Libraries και προσθέτουμε curses =====xwidgets ===== Δοκιμή μεταγλώττισης του ftp://biolpc22.york.ac.uk/pub/binary/wxWidgets-DialogsDemo-SuSE-GTK.tar.gz από http://www.wxwindows.org/downloads/demos.htm aptitude install wx2.6-headers libwxbase2.6-dev libwxgtk2.6-dev wx-common wx2.6-examples ln -s /usr/include/wx-2.6/wx/ /usr/include/wx ====== Πηγές ====== * Ενδιαφέρουσες προσθήκες στην γλώσσα στις τελευταίες εκδόσεις * https://github.com/AnthonyCalandra/modern-cpp-features * Reference * https://en.cppreference.com/w/cpp * String Class examples : * http://www.yolinux.com/TUTORIALS/LinuxTutorialC++StringClass.html * C++20 * https://oleksandrkvl.github.io/2021/04/02/cpp-20-overview.html