Czytasz wątek: Lamerskie pytania
-
Lamerskie pytania wysłany: 2007-03-05 10:30
Na początku zaznaczam że programowaniem jako tako to zajmowałem się jeszcze w czasach małego Atari, oczywiście w Basicu. Na Amidze już tylko troszkę liznąłem Amosa i BlitzBasica, a językiem C nigdy dotąd się nie interesowałem. Wczoraj dopiero zaliczyłem swoje pierwsze "Hello World", dlatego proszę się nie śmiać z pytań które poniżej postawię.
Więc tak, po zainstalowaniu SDK i przeczytaniu dosyć ubogiego dokumentu PDF dołąçczonej do pakietu, zaczęłem rozglądać się za jakimiś przykładami pomocnymi przy stawianiu pierwszych kroków w tym języku. Wybór padł na kurs Y-Grega znajdujący się na PPA.
Już pierwszy najprostszy podany tam przykład który jak mniemam powinien kompilować się bezproblemowo na wszystkim, dał mi trochę powodów do zastanowienia:
#include
main()
{
printf("Pierwszy program napisany w C, pod VBCCn");
exit(0);
}
Po pierwsze literka n na końcu zdania pojawiła się na ekranie. Na szczęście analizując Hyperionowy dokument PDF z tym drobiazgiem sobie poradziłem, trzeba pisac "\n" i wszystko gra
Niemniej GCC choć skompilował program wypluł z siebie następujące komunikaty:
[i]ram:1.c:5: warning: incompatible implicit declaration of built-in function 'exit'
ram:1.c:6:2: warning: no newline at end of file
[/i]
Jak więc widać coś chyba nie tak z funkcją exit. Lamerskie pytanie numer jeden brzmi, jak użyć (bądź zastąpić) tej funkcji aby wszystko przebiegło OK ?
Drugi przykład który przecież zbyt skomplikowany nie jest już niestety nie chciał mi się skompilować:
#include
main()
{
int zmienna;
printf("Jesteś kobietą czy mężczyzną?n");
printf("1-kobietan");
printf("2-mężczyznan");
zmienna=getchar();
/* Sprawdzanie co zostalo wpisane */
/* jeżeli 1 to kobieta */
if(zmienna == '1'){
printf("A więc jesteś kobietą...n");
exit(0);
}
/* jeżeli 2 to mężczyzna */
else if(zmienna == '2'){
printf("A więc jesteś mężczyzną...n");
exit(0);
}
/* jeżeli ani 1 ani 2 */
printf("Hmmm, coś z tobą nie takn");
exit(0);
}
Kompilator wypluł:
[i]ram:2.c: In function 'main':
ram:2.c:7: warning: incompatible implicit declaration of built-in function 'printf'
ram:2.c:18: warning: incompatible implicit declaration of built-in function 'exit'
ram:2.c:25: warning: incompatible implicit declaration of built-in function 'exit'
ram:2.c:31: warning: incompatible implicit declaration of built-in function 'exit'
ram:2.c:32:2: warning: no newline at end of file[/i]
No i znowu podobne pytanie, jak przerobić ten przykład aby bezproblemowo skompilował mi się w GCC pod OS4 ?
-
Lamerskie pytania wysłany: 2007-03-05 11:14
@mufa
Kompilator wypluł:
[i]ram:2.c: In function 'main':
ram:2.c:7: warning: incompatible implicit declaration of built-in function 'printf'
ram:2.c:18: warning: incompatible implicit declaration of built-in function 'exit'
ram:2.c:25: warning: incompatible implicit declaration of built-in function 'exit'
ram:2.c:31: warning: incompatible implicit declaration of built-in function 'exit'
ram:2.c:32:2: warning: no newline at end of file[/i]
Powyzszy przyklad wypluwajac tylko same ostrzezenia (warning)
powinien sie skompilowac. Na szybko wkleilem, sprawdzilem
i u mnie wypluwa takze blad:
[i]error: #include expects "FILENAME" or[/i]
Jak widac brakuje nazwy #includa. Po usunieciu linii "#include" program u mnie sie kompiluje i dziala.
-
Re:Lamerskie pytania wysłany: 2007-03-05 11:34
[i]Wybór padł na kurs Y-Grega znajdujący się na PPA.[/i]
Wybór niestety nie był najszczęśliwszy... Ten kurs jest taki sobie, oględnie mówiąc.
[i]Na szczęście analizując Hyperionowy dokument PDF z tym drobiazgiem sobie poradziłem, trzeba pisac "\n" i wszystko gra[/i]
Sekwencja "\n" wstawia do łańcucha tekstowego znak końca linii.
Wyjście z programu funkcją exit(0) jest niepoprawne. Funkcji tej powinno się używać tylko w przypadku "anormalnego" wyjścia np. w przypadku jakiegoś krytycznego błędu. Normalnie powinniśmy po prostu napisać return(0);. W systemach amigowych zresztą exit() może zadziałać nie do końca poprawnie.
W drugim natomiast przykładzie jest dyrektywa #include, ale bez nazwy pliku, powinno tam być.
[i]warning: no newline at end of file[/i]
A tu z kolei drobna ciekawostka GCC, ostatnia linia kodu powinna być zakończona znakiem końca linii. Wystarczy więc w edytorze stanąć kursorem na końcu ostatniej linii, wcisnąć ENTER i zapisać kod źródłowy.
-
Lamerskie pytania wysłany: 2007-03-05 11:38
No tak, rzeczywiście teraz działa. Fajnie, bo rozbudowując ten przykład można zrobić już coś bardziej sensownego niż "Hello World", np. quiz czy grę tekstową. A sensowne rzeczy mnie wciągają, więc jest szansa że już na starcie nie zniechęcę się do tego C, i czegoś się jednak nauczę
-
Re:Lamerskie pytania wysłany: 2007-03-05 12:14
@Grzegorz
bez nazwy pliku, powinno tam być.
[i]warning: no newline at end of file[/i]
A tu z kolei drobna ciekawostka GCC, ostatnia linia kodu powinna być zakończona znakiem końca linii. Wystarczy więc w edytorze stanąć kursorem na końcu ostatniej linii, wcisnąć ENTER i zapisać kod źródłowy.
Dzięki, poprawiłem kod zgodnie z Twoimi wskazówkami i teraz skompilowało się bez najmniejszych zgrzytów.
-
Lamerskie pytania wysłany: 2007-03-05 19:33
Daj sobie spokoj z C i ucz się C++. Dzis nie ma żadnego powodu żeby używac C.
-
Re:Lamerskie pytania wysłany: 2007-03-05 20:13
wywal wszystkie exity() i daj na koncu return 0;
przed printf("Hmmm, coś z tobą nie takn"); wpisz else
ewentualnie obczaj switch() case 1: break; etc.
-
Lamerskie pytania wysłany: 2007-03-06 00:01
Tu byl komentarz - autor wie dlaczego go nie ma. Link do materialow naruszajacych prawa autorskie.
-
Lamerskie pytania wysłany: 2007-03-06 22:25
@Admin
Tu byl komentarz - autor wie dlaczego go nie ma. Link do materialow naruszajacych prawa autorskie.
nie, no ok, chociaż z drugiej strony bez rkrm trudno coś systemowego napisać. Trzeba się także zastanowić czyje prawa sie w takim razie narusza (bynajmniej to nie jest moja strona - żeby nie było). RKRM nie był wzawiane, dostęp do nich jest żaden, na allegro raz było xero (czyli też naruszanie prawa) a bez tej wiedzy naprawde trudno coś zaprojektować do programowania
-
Lamerskie pytania wysłany: 2007-03-07 22:29
@amilech
Trzeba się także zastanowić czyje prawa sie w takim razie narusza
To nie ma znaczenia. Teraz sa takie czasy, ze w sprawach o prawa autorskie zawsze lepiej dzialac profilaktycznie. Kazdy wiec podejrzany link bedziemy z tego forum usuwac natychmiastowo.
-
Re:Lamerskie pytania wysłany: 2007-03-08 18:41
Najjlepszy (moim skromnym zdaniem) kurs C++ jaki jest na sieci http://it.hk.pl/
polecam naprawdę dobry !!!
-
Re:Lamerskie pytania wysłany: 2007-03-08 19:01
@ma3x
C++ i amiga wymaga jednak dobrej znajomości systemu od środka
@Admin
w takim razie proszę o wykasowanie newsa o magazynach amigowych bo też może naruszać prawo autorskie
-
Re:Lamerskie pytania wysłany: 2007-03-08 19:19
@amilech
w takim razie proszę o wykasowanie newsa o magazynach amigowych bo też może naruszać prawo autorskie
W linku, ktory podales byla cala zeskanowana ksiazka. Jezeli konicznie musisz miec racje to ok, masz racje.Z mojej strony EOT.
-
Re:Lamerskie pytania wysłany: 2007-04-12 11:57
Mufa:
http://home.agh.edu.pl/~chwastek/lectures/C/spis.html ; w sieci nie ma lepszego darmowego kursu C, ten jest hax00rski i w ogóle cool
-
Re:Lamerskie pytania wysłany: 2011-03-19 11:59
@lam33k
http://home.agh.edu.pl/~chwastek/lectures/C/spis.html ; w sieci nie ma lepszego darmowego kursu C, ten jest hax00rski i w ogóle cool
1.
Wiem, że post z przed kilku lat, link nie działa. Ale może ma ktoś gdzieś odnośnik do w/w strony lub kursu Pana Chwastka?
2.
Zainstalowałem sobie VBCC, ale tam jest kilka okrojonych includów. Czy mogę je zgrać np. z pakietu StormC3.0, gdzie jest ich znacznie więcej i są o wiele obszerniejsze?
Czy nie ma jakiegoś prostszego w obsłudze i bardziej "zwartego" pakietu do programowania w C/C++ na Amidze? Np. W języku "E" jest tylko kompilator, bezproblemowa instalacja i użytkowanie.
- Menu
- Baza wiedzy
- AmigaOS.pl