Potrudiću se da prvo odgovorim na pitanja (mada sam na slična pitanja odgovarao na news.linuks.org-u - linuks.prg.c konferencija)...
HAVE_CONFIG_H je najprostija definicija (oprostite izraz, ja to tako zovem :) i služi da se ispita da li treba uključiti config.h heder ili ne. config.h produkuje (uglavnom) GNU Autoconf. Autoconf, Automake i GNU M4 izlaze iz okvira ovog teksta i o njima se knjige pišu tako da ... nema se vremena za objašnjavanje ovih stvari. Ukratko, kad startuješ ./configure skript on između ostalog kreira i config.h (nekada ne kreira, zavisi od configura.in skripta, ali ZABORAVI to :). Ovaj pomenuti ./configure skript takođe u Makefile doda i -DHAVE_CONFIG_H u opcije za kompajler (CFLAGS ili CXXFLAGS), što znači da će u tom slučaju (posmatraj svoj kod) da se UKLJUČI config.h heder u kome su razne druge definicije...
clrscr() će samo da ti napravi problem prilikom kompajliranja na Linux-u, jer ta funkcija ne postoji. Ono što možeš da uradiš je da sa
Code:
// ovo ide na vrh programa, medju headere
#ifdef WIN32
# include <conio.h>
#endif
i
Code:
// ovo je modifikovana clrscr_ iz tvog koda
void clrscr_(void)
{
#ifdef WIN32
clrscr();
#else
int iRez = system("clear");
#endif
// obrisace ekiran :)
}
... napraviš neko zaobilazno rešenje...
Što se tiče getch() ... Malo sam se smejao dok sam čitao tvoj tekst jer to je TIPIČAN problem sa Windows C/C++ programerima... Naime u Linux-u i UNIX-u postoji getchar(), getch() je zapravo (nisam sto posto siguran ali pretpostavljam) "pozajmljena" getchar() funkcija... Dakle, koristi getchar() na Linux-u, a getch() na Windows-u (iskoristi prethodni paragraf i kod koji sam ti dao da bi kompajleru tokom kompajliranja dao na znanje šta da radi na kojoj platformi sa #ifdef direktivom)...
Ti si odličan primer kako razvojna okruženja loše utiču na programere početnike... Jeste sve to lepo, ali to programera nikad ne nauči "zašto je ovo ovde, a ono onde"... :(
Na pitanje "zasto umjesto return EXIT_SUCCESS ne moze pisati getch()" nemam komentara... EXIT_SUCCESS je definicija iz stdlib.h hedera i sa time zapravo sistemu govoriš da je je program završio sa uspehom svoj posao (najprostije rečeno :) ! Dok getch() daje kod karaktera koji si pritisnuo... Ako ti ne vidiš razliku između to dvoje onda bi zaista trebalo da još jednom razmisliš da li je posao programera zaista za tebe... :(
Postoji program koji je sličan TurboC-u na Linux-u, čak više njih! Moj omiljeni je MOTOR (na kome pomalo i sam radim, URL:
http://www.linuks.org/search/search.php?text=motor). Drugi koji je dosta nestabilan jer je mnooogo obimniji je RHIDE (
http://www.rhide.com/ ).
Ako želiš GUI stvar koja podseća na Borland C++ Buillder, onda je VDKBuilder prava stvar za tebe (i njega možeš naći na našem
www.linuks.org-u , samo upotrebi pretraživač).
Tebi treba fundamentalno znanje C i C++-a, ako ti to škola obezbedi onda je super! Nebitno je da li se koristi VisualC++! Međutim, VisualC++ i sva slična okruženja (ovo sam tooooliko puta pominjao) prave lenje programere, ubijaju kreativnost i prave programere koji su mnogo stereotipni. Neko će reći da nije tačno ovo što govorim, ali ja i dalje stojim iza svojih reči, jer je ovo što kažem bazirano na iskustvu. - Naime lično sam imao prilike da upoznam desetine VisualC++ i Borland C++ programera koji nikada u životu nisu čuli, a kamoli pokrenuli/probali nmake (VC) ili (t)make (BC) ... ruku. Ali kako vreme ne postoj
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin