====== 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