eXec.plMAGAZYN UŻYTKOWNIKÓW KOMPUTERÓW AMIGA
MAGAZYN UŻYTKOWNIKÓW KOMPUTERÓW AMIGA

niedziela, 17. października, 2021, 22:11

Amiga forum / C/C++ / Lamerskie pytania

Czytasz wątek: Lamerskie pytania

mufa
Nieaktywny użytkownik starego forum

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 ?


Odpowiedz

Admin
Nieaktywny użytkownik starego forum

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.

Odpowiedz

Grzegorz
Nieaktywny użytkownik starego forum

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.


Odpowiedz

mufa
Nieaktywny użytkownik starego forum

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ę


Odpowiedz

mufa
Nieaktywny użytkownik starego forum

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.

Odpowiedz

smith
Nieaktywny użytkownik starego forum

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.

Odpowiedz

amilech
Nieaktywny użytkownik starego forum

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.




Odpowiedz

Admin
Nieaktywny użytkownik starego forum

Lamerskie pytania wysłany: 2007-03-06 00:01

Tu byl komentarz - autor wie dlaczego go nie ma. Link do materialow naruszajacych prawa autorskie.

Odpowiedz

amilech
Nieaktywny użytkownik starego forum

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

Odpowiedz

Admin
Nieaktywny użytkownik starego forum

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.

Odpowiedz

ma3x
Nieaktywny użytkownik starego forum

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



Odpowiedz

amilech
Nieaktywny użytkownik starego forum

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

Odpowiedz

Admin
Nieaktywny użytkownik starego forum

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.

Odpowiedz

lam33k
Nieaktywny użytkownik starego forum

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

Odpowiedz

Prince
Nieaktywny użytkownik starego forum

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.


Odpowiedz

1 2 następna »

AmigaOS.pl