Borland C++ Compiler/Wprowadzenie

Kompilator? A z czym to się je?

edytuj

Kompilator to specjalny program, który przekształca twój kod (np. w C++) na plik wykonywalny EXE, który później możesz uruchomić klikając dwukrotnie na jego ikonkę... no to tak w dużym uproszczeniu, (szczegóły w postaci chociażby konsolidatora na razie wam ominę). Niektórzy mylą pojęcia kompilator ze zintegrowanym środowiskiem takim jak np. Visual C++ czy darmowy Dev-C++. To już nie tylko kompilator ale tzw. IDE, czyli taka graficzna otoczka dla kompilatora, debuggera, konsolidatora itp. Skoro już wiesz - idźmy dalej...

Dlaczego warto to mieć na swoim twardzielu

edytuj

Wielu z was zapytałoby: Po co się męczyć z gołymi kompilatorami skoro można użyć zintegrowanego środowiska? Przede wszystkim taki np. Dev-C++ nie daje Ci 100% konfigurowalności. Z Borland C++ Compiler sam decydujesz np. o poziomie optymalizacji swojego kodu, masz dostęp do wszelkich szczegółów nawet wyboru swojego IDE (edytorów przystosowanych do C++ jest w internecie "od groma"). Poza tym miliony ludzi na całym świecie używają Borland C++ Compiler, bo jest to narzędzie tworzone przez najlepszych profesjonalistów.

Skąd wziąć FCLT?

edytuj

Po prostu wejść na stronę polskiego oddziału firmy Borland: http://www.borland.pl/ Znaleźć dział Download i ściągnąć. W najnowszej wersji jakieś 8 i pół MB. Przedtem jednak trzeba się zarejestrować... Od tej chwili poza nowym kompilatorem C++ nasza skrzynka będzie "zapychana" listami od firmy Borland, a to Developer Days, a to nowe środowisko, które ostatnio wypuścili, ale spokojnie nie będzie tego dużo, jakoś to przeżyjecie ;).

Instalacja

edytuj

Po uruchomieniu instalatora warto umieścić nasz kompilator w standardowej lokalizacji (C:\Borland\Bcc55) przynajmniej na początku, unikniemy wtedy późniejszych nieporozumień. Następnie wypadałoby połączyć linkera oraz kompilator z bibliotekami i standardowymi plikami nagłówkowymi. W tym celu należy uruchomić notatnik systemowy i wklepać lokalizację include (pliki nagłówkowe)i lib (biblioteki) tak:

-I"C:\Borland\Bcc55\include"
-L"C:\Borland\Bcc55\lib;C:\Borland\Bcc55\lib\PSDK"

Analogicznie: jeśli masz gdzieś jeszcze biblioteki powinieneś dopisać jeszcze jeden ';' przy -L i podać ich lokalizacje, to samo z includami. UWAGA - jeżeli twoja aplikacja będzie uruchamiana pod systemem niższym niż Win2k to musisz dopisać kolejne linijki:

-DWINVER=0x0400
-D_WIN32_WINNT=0x0400

Teraz powinieneś zapisać ten plik w katalogu bin jako: bcc32.cfg. Uważaj aby notatnik nie zapisał go jako bcc32.cfg.txt! Dla konsolidatora warto powiedzieć gdzie są jego biblioteki: stwórz plik ilink32.cfg i wpisz do niego:

-L"C:\Borland\Bcc55\lib;C:\Borland\Bcc55\lib\PSDK"

Teraz trzeba powiadomić system gdzie jest nasze FCLT aby można je było uruchamiać bez podawania lokalizacji. W tym celu musimy do zmiennej środowiskowej PATH dodać lokalizację katalogu bin naszego kompilatora. W systemach Win9x można to zrobić na 2 sposoby:

  • edytować plik Autoexec.bat i dopisać do niego linijkę:
SET PATH=%PATH%;C:\Borland\Bcc55\Bin
  • uruchomić msconfig (Start>Uruchom>msconfig) kliknąć zakładkę Autoexec.bat i dodać powyższą linijkę.

W WinME są również 2 drogi:

  • w Autoexec.bat do zmiennej środowiskowej PATH dopisać:
;C:\Borland\Bcc55\Bin
  • uruchomić msconfig i w zakłdce Środowisko do zmiennej PATH dopisać powyższą linijkę

Natomiast w Win2k/XP we właściwościach systemu (Właściwości systemu>Zaawansowane>Zmienne środowiskowe): należy dodać zmienną PATH i dopisać jej wartość:

%PATH%;C:\Borland\Bcc55\Bin

W Windows7 panel sterowania>system>zaawansowane ustawienia systemu, w zakładce zaawansowane wybieramy zmienne środowiskowe, edytujemy zmienną systemu "Path" na koniec linijki dopisujemy ;C:\Borland\Bcc55\Bin

Co mamy w katalogu bin

edytuj
BCC32 kompilator c/c++
ILINK32 konsolidator; BCC32 sam go wywołuje jednak ilink32 przydaje do budowy zaawansowanych projektów
BRCC32 kompilator zasobów, czyli narzędzie do kompletowania ikonek, bitmap, czy nawet łańcuchów tekstu, żeby nie zalegały one sobie w katalogu z naszym programem
BRC32 łączy nieskompilowane skrypty zasobów (pliki *.rc) z EXE'kiem
MAKE świetne narzędzie do zarządzania projektami
TOUCH zmienia datę i czas ostatniej modyfikacji pliku na bieżącą
CPP32 preprocesor C; bcc32 sam go wywołuje
GREP przeszukuje pliki tekstowe.
FCONVERT konwertuje teksty z OEM na ANSI i odwrotnie.
TDUMP podaje szczegółowe dane na temat pliku EXE (np. funkcje z bibliotek DLL z jakich korzysta).
IMPLIB na podstawie bibliotek DLL i/lub plików *.def tworzy biblioteki statyczne (*.lib)
TLIB pozwala na opercje na bibliotekach statycznych (*.lib) (dodawanie/odejmowanie/ekstrakcję/... itd. plików *.obj)

Podstawy użytkowania FCLT

edytuj

Każde narzędzie dostępne w pakiecie uruchamia się jak sama nazwa wskazuje z wiersza poleceń (commandline). Aby uruchomić wiersz poleceń klikamy kolejno Start>Uruchom i w polu tekstowym wpisujemy command lub cmd (w zależności od systemu). Teraz możemy zacząć wpisywać pierwsze polecenia. Ogólny szablon wywoływania narzędzi FCLT wygląda tak:

<tool> [<opcje>] <plik(i)>
<tool>
nazwa narzędzia np. BCC32, ILINK32, TDUMP
<opcje>
symbole znakowe z przedrostkiem w postaci myślnika: '-' lub slash'a: '/' - konkretne wytyczne dla danego narzędzia określające sposób jego pracy, mające wpływ na ostateczny wynik działania programu; np. aby kompilować pod Windows trzeba dodać opcje -tW do wywołania kompilatora
<plik(i)>
nazwa/y jednego lub więcej plików źródłowych na podstawie których dane narzędzie będzie generować plik(i) wynikowy/e; jeżeli nie jesteśmy w aktualnej lokalizacji w której znajduje się dany plik źródłowy to trzeba podać jego bezpośrednią ścieżkę.

Elementy <opcje> i <plik(i)> powyższego szablonu tworzą razem tzw. parametry wywołania programu, natomiast wszystko to co pojawi się na ekranie po jego wywołaniu nazywamy jego standardowym wyjściem (stdout). Jeśli program nie natrafi na żadne błędy składniowe w pliku/ach źródłowym/ch to plik(i) wynikowe zapisywane są do lokalizacji, w której aktualnie się znajdujemy niezależnie od tego gdzie znajdowały się plik(i) źródłowe. Wyjątkiem od tej reguły jest program BRCC32.

Jak BCC32 buduje program

edytuj
  1. Najpierw analizowane są parametry wywołania BCC32: kompilator włącza opcje na podstawie których dokonywana jest kompilacja; otwierane są plik(i) źródłowe.
  2. Uruchamiany jest tzw. preprocesor, który przetwarza wszystkie dyrektywy w pliku/ach źródłowym/ch poprzedzone hash'em: '#' tzn.:
    • "wkleja" pliki nagłówkowe (*.h i *.hpp), które zadeklarowaliśmy słowem kluczowym #include; jeżeli zadeklarowany plik umieściliśmy w nawisach trójkątnych: '<>' to preprocesor szuka pliku we wszystkich lokalizacjach zapisanych przy opcji -I w pliku bcc32.cfg lub w parametrach wywołania; jeśli natomiast deklarowany plik został umieszczony w podwójnych cudzysłowach: "" to preprocesor szuka go w lokalizacji ze źródłami;
    • podmienia stałe i makropolecenia #define
    • wykonuje inne dyrektywy preprocesora takie jak #pragma
    • na podstawie dyrektyw: #ifdef, #ifndef, #else i #endif decyduje, które kawałki kodu będą kompilowane; jest to tzw. kompilacja warunkowa
  3. Następnie program wyszukuje i wypisuje na standardowe wyjście ewentualne błędy i ostrzeżenia
  4. Jeśli program nie ma błędów dokonywana jest właściwa kompilacja i jeżeli podczas kompilacji nie wystąpiły błędy w miejscu każdego pliku źródłowego (*.cpp lub *.c) podanego w parametrach wywołania generowane są pliki: *.obj (obiekty)
  5. uruchamiany jest konsolidator, czyli program, który łączy pliki *.obj z bibliotekami (*.lib) i zasobami programu (*.RES) (tylko w przypadku programów pod Windows) w program (*.exe) lub bibliotekę dynamiczną (*.dll) w zależności od opcji podanych przy wywołaniu

Na podstawie rozszerzenia plików źródłowych podanych w parametrach wywołania BCC32, kompilator rozpoczyna operacje od punktu 1 (pliki *.c lub *.cpp) albo od punktu 5 (pliki *.obj i *.lib).

Najprostsza kompilacja

edytuj

Po takiej dawce teorii pora na praktyczne zastosowanie kompilatora BCC32. Skopiujcie tradycyjny kod Hello World do notatnika:

#include <iostream.h>

int main()
{
  cout << "Hello World z Borland C++ Compiler!";
  getchar();
 return 0;
};

Zapiszcie ten program jako hello.cpp do katalogu c:\kod. Teraz wystarczy w wierszu poleceń "wejść" w tą lokalizację:

c:
cd c:\kod

skompilować plik:

bcc32 hello.cpp

...i hello.exe jest już gotowy do odpalenia. Prawda że proste? ;)

Edytory

edytuj

Ten sposób kompilacji jest prosty, ale sprawdza się tylko w przypadku małych programów. Pisanie w mało zaawansowanym edytorze takim jak Notatnik bywa uciążliwe. Przed prawdziwym zajęciem się programowaniem z narzędziami firmy Borland warto postarać się o jakiś zaawansowany edytor mający cechy IDE, czyli z podświetlaną składnią C++, makrami obsługującymi kompilator itp. Ja osobiście używam SynTextEditor (http://syn.sourceforge.net). Atutami tego programu są przede wszystkim duża uniwersalność i rozbudowane makra. Polecam też IDE Relo (http://www.fifsoft.com/relo/), jest świetnie przystosowane do obsługi BCC32, jednak nie pozwala na taką swobodę jak SynTextEditor. Wielu programistów używa też edytora V-IDE (http://www.objectcentral.com/vide.htm). Spis również innych edytorów przystosowanych do pracy z BCC32 jest na stronie: http://personal.sirma.bg/Jogy/bcc55.html

W internecie jest wiele edytorów dla programistów wystarczy je tylko poszukać i znaleźć coś dla siebie.