21:23 <@Gynvael> zaczynamy 21:24 <@Gynvael> ok 21:24 <@Gynvael> wiec ;> 21:24 -!- mode/#gynkurs [+m] by Gynvael 21:24 <@Gynvael> ok 21:24 <@Gynvael> wiec ;> 21:24 <@Gynvael> dzisiaj bedzie o jakims tam preprocesorze 21:24 <@Gynvael> i o obsludze plikow 21:25 <@qnew> heh - wiem co to preprocesor ;] 21:25 <@Gynvael> ;> 21:25 <@phoenix__> to sie zamknij 21:25 <@Gynvael> ok 21:25 <@Gynvael> wiec 21:25 <@Gynvael> jak mowilem na #1 21:26 <@Gynvael> podczas wykonywania polecenia gcc plik.c 21:26 <@Gynvael> zostaje wykonanych pare osobnych czynnosci 21:26 <@Gynvael> najpierw plik dostaje PREPROCESOR, wykonuje swoja robote o ktorej za chwile 21:26 <@Gynvael> potem KOMPILATOR ktory tlumaczy na asma 21:27 <@Gynvael> ASSEMBLER ktory tlumaczy na plik obiektowy 21:27 <@Gynvael> i LINKER ktory z pliku obiektowego (badz paru plikow obiektowych) tworzy plik wykonywalny 21:27 <@Gynvael> (badz .dll/.so czy co tam chcemy) 21:27 <@Gynvael> zadaniami PREPROCESORA jest glownie ulatwianie zycia programista 21:27 <@Gynvael> *programistom 21:28 -!- mode/#gynkurs [+ooo phoekurs phoelog pixello] by G0blin 21:28 [Users #gynkurs] 21:28 [@b3x ] [@d0b0c0p] [@j00ru`crk] [@phoekurs ] [@qnew ] 21:28 [@Blizzard ] [@G0blin ] [@kiero ] [@phoelog ] [@SlimAway] 21:28 [@bubel ] [@gRl ] [@mulander ] [@phoenix__] [@unknow ] 21:28 [@crgh0st`sleep] [@Gynvael] [@Nekrataal] [@pixello ] 21:28 -!- Irssi: #gynkurs: Total of 19 nicks [19 ops, 0 halfops, 0 voices, 0 normal] 21:28 <@Gynvael> na #1 mowilem juz o dyrektywie #include 21:28 <@Gynvael> wiec nie bede sie nad nia rozwodzil 21:29 <@Gynvael> powiem tylko tyle ze, tlumaczac lopatologicznie, WKLEJA ONA ZAWARTOSC PLIKU PODANEGO W PARAMETRZE W JEJ MIEJSCE 21:29 <@Gynvael> czyli przykladowo 21:29 <@Gynvael> jesli mamy plik asdf.txt o zawartosci (miedzy --) 21:29 <@Gynvael> -- 21:29 <@Gynvael> ala 21:29 <@Gynvael> ma 21:29 <@Gynvael> kota 21:29 <@Gynvael> -- 21:29 <@Gynvael> i plik main.c o zawartosci: 21:29 <@Gynvael> -- 21:29 <@Gynvael> #include "asdf.txt" 21:29 <@Gynvael> -- 21:29 <@Gynvael> to po przejsciu preprocesora plik wynikowy ma postac: 21:29 <@Gynvael> -- 21:29 <@Gynvael> ala 21:29 <@Gynvael> ma 21:29 <@Gynvael> kota 21:29 <@Gynvael> -- 21:30 <@Gynvael> czyli w miejsce #include "asdf.txt" zostala wklejona zawartosc tego pliku 21:31 <@Gynvael> teraz tak 21:31 * G0blin pytanie 21:31 <@Gynvael> czestym bledem w rozumieniu "include" jest myslenie ze "#include dolacza biblioteki" 21:32 <@Gynvael> #include po prostu "wkleja" ich naglowek do kompilowanego zrodla 21:32 <@Gynvael> nic mniej nic wiecej 21:32 <@Gynvael> linker dolacza biblioteki;> 21:32 <@Gynvael> (z tym ze mowi sie ze linkuje biblioteki) 21:32 <@Gynvael> G0blin: za chwilke ;> 21:32 <@Gynvael> ok 21:32 <@Gynvael> #include wystepuje w dwoch wersjach 21:32 <@Gynvael> #include "parametr" 21:33 <@Gynvael> #include 21:33 <@Gynvael> roznica jest niewielka 21:33 -!- White_elluck [~elluck@aye142.neoplus.adsl.tpnet.pl] has joined #gynkurs 21:33 <@Gynvael> w pierwszym przypadku plik jest szukany w danym katalogu (w tym w ktorym jest zrodlo) 21:33 -!- pixello is now known as slucha_zaciekaw 21:33 <@Gynvael> natomiast w drugim przypadku plik jest szukany w katalogach include kompilatora (w przypadku dev-cpp to jest dev-cpp\include, na linuxie sa to /usr/include i /usr/local/include) 21:34 <@Gynvael> oraz w miejscach wskazanych przez parametr -I przy kompilacji 21:34 <@Gynvael> np 21:34 <@Gynvael> gcc plik.c -I ./xxx/ 21:34 <@Gynvael> bedzie szukalo plikow < > rowniez w katalogu xxx 21:34 <@Gynvael> tyle o include 21:34 <@Gynvael> pytanka ? 21:34 -!- mode/#gynkurs [-m] by Gynvael 21:35 <@slucha_zaciekaw> mozna nie zwiazane z tematem? :> 21:35 <@qnew> raczej nie - wszystko profesjonalnie wyjaśnione ;] 21:35 < White_elluck> czy beda kursy z asambler?? 21:35 <@G0blin> tak :] 21:35 -!- slucha_zaciekaw is now known as gosu_player 21:35 <@G0blin> mam pytanko :] 21:35 <@Gynvael> gosu_player: to zalezy jak ardzo niezwiazane 21:35 <@gosu_player> Gynvael pogramy wieczorkiem? :> 21:35 <@Gynvael> White_elluck: tak, od nastepnego tygodnia od poniedzialku badz srody, na topicu sie pojawi dokladnie 21:35 <@Gynvael> gosu_player: nie ;p 21:35 <@G0blin> powiedz mi Gynvael.... 21:35 <@Gynvael> gosu_player: gralem dzisiaj 4 z nekiem i mi starczy ;p 21:35 <@Gynvael> G0blin: mow mow 21:35 <@Gynvael> qnew: ;> 21:36 <@qnew> ;] 21:36 <@G0blin> czy w pliku na przyklad stdio.h jest zawarte z czym trzeba go zlinkowac 21:36 <@G0blin> zeby bylo ok 21:36 <@G0blin> ? 21:36 <@Gynvael> G0blin: nie, z tym ze czesc bibliotek (tzw libc) jest defaultowo linkowany 21:36 <@Gynvael> G0blin: zeby nie linkowalo sie z niczym trzeba dac -nostdlib przy kompilacji 21:36 <@gosu_player> polecam ksiazke "c to proste" kosztuje jakies 25pln i sie mozna troche dowiedziec ;> 21:36 <@Gynvael> G0blin: te wszystkie printf, strlen, etc sa wbudowane 21:37 <@G0blin> printf? 21:37 <@G0blin> myslalem, ze printf jest w stdio 21:37 <@Gynvael> G0blin: w stdio jest jego DEKLARACJA 21:37 <@Gynvael> G0blin: natomiast samo cialo (skompilowane) jest w tzw libc ktore jest defaultowo linkowane ze wszystkimn 21:37 <@Gynvael> ;> 21:38 <@Gynvael> root@yume:/usr/lib# ls -l libc.a 21:38 <@Gynvael> -rw-r--r-- 1 root root 2532408 2004-05-25 06:44 libc.a 21:38 <@Gynvael> to to 21:38 <@G0blin> Gynvael: czyli.... 21:38 <@G0blin> ze jak nie dam: 21:39 <@G0blin> #include 21:39 <@G0blin> to wtedy on ma jak wykonac printf 21:39 <@G0blin> ale nie wie, ze to jest printf? 21:39 <@qnew> heh 21:39 <@qnew> to sa dyskusje o dziesiejszym teamcie?? 21:39 <@qnew> temacie* 21:39 <@phoenix__> tak 21:39 <@Gynvael> G0blin: powinienes dostac warninga, ale wszystko powinno dzialac, z tym ze to od kompilatora zalezy 21:40 <@qnew> dobra ja spadam (ojciec wzywa ;/ ;] ) logi będą?? 21:40 <@Gynvael> qnew: beda 21:40 <@qnew> no to spox 21:40 <@phoenix__> qnew: chyba 21:41 <@qnew> ;] 21:41 <@qnew> cya all 21:41 <@Gynvael> G0blin: jeszcze cos ? 21:41 -!- qnew [~test@asy14.neoplus.adsl.tpnet.pl] has left #gynkurs [] 21:41 <@G0blin> w8 21:41 <@G0blin> ojciec przyszedl 21:41 <@G0blin> :P 21:41 <@Gynvael> ;> 21:41 <@Gynvael> to jade dalej 21:41 <@Gynvael> ;p 21:41 <@Gynvael> k ? 21:41 <@phoenix__> k 21:41 <@G0blin> jedz 21:42 <@phoenix__> uwazaj na skretach ;P 21:42 <@G0blin> w8 21:42 <@G0blin> poszedl :p 21:42 <@Gynvael> ok 21:42 <@G0blin> Gynvael: a gcc da warninga i skompiluje? 21:42 <@Gynvael> G0blin: powinien 21:42 <@G0blin> zaraz testne :] 21:43 <@G0blin> o fak 21:43 -!- gosu_player is now known as wacek 21:43 <@G0blin> ktos mi ukradl kabel zasilajacy od 2-go monitora :P 21:43 <@Gynvael> --; 21:43 <@Gynvael> lol 21:43 -!- wacek is now known as zona_ciecia 21:44 <@phoenix__> nie zmieniaj nickow !! 21:44 -!- zona_ciecia is now known as Ja_jestem_norma 21:44 -!- Ja_jestem_norma is now known as jestem_normalny 21:44 <@Gynvael> ok 21:44 <@Gynvael> jade dalej 21:44 <@Gynvael> bo g0blin szuka kabla or sth 21:44 -!- jestem_normalny was kicked from #gynkurs by jestem_normalny [pow!] 21:44 <@G0blin> juz mam 21:44 -!- jestem_normalny [~vircuser@dsm150.neoplus.adsl.tpnet.pl] has joined #gynkurs 21:44 <@G0blin> zaraz sprawdze 21:44 <@Gynvael> nie kopcie sie 21:44 <@Gynvael> ;p 21:44 -!- mode/#gynkurs [+m] by Gynvael 21:44 <@Gynvael> ok 21:44 <@Gynvael> lecimy dalej 21:45 <@Gynvael> wiec 21:45 <@Gynvael> nastepna rzecza ciekawa jest #define 21:46 <@Gynvael> #define NAZWA PARAMETR 21:46 <@Gynvael> ogolnie dziala to tak ze zmienia wszystkie wystapienia "NAZWA" na "PARAMETR" 21:46 -!- jestem_normalny is now known as BadPixel 21:46 <@Gynvael> takie "replace" 21:47 <@Gynvael> np 21:47 <@Gynvael> #define ALA 12 21:47 <@Gynvael> int c; 21:47 <@Gynvael> c = ALA; 21:47 <@Gynvael> zostanie zmienione ostatencznie na 21:47 <@Gynvael> c = 12; 21:47 <@Gynvael> mozna to latwo sprawdzic 21:47 <@Gynvael> gcc -E plik.c 21:47 <@Gynvael> to spowoduje wykonania tylko fazy preprocka 21:48 * G0blin sprawdzil 21:48 -!- ]Ce_Cztery[ [~BeOm_@avi120.neoplus.adsl.tpnet.pl] has joined #gynkurs 21:48 <@Gynvael> #define moze rowniez podmieniac "NAZWE" na pare linii 21:49 <@Gynvael> \ na koncu linii (to backslach ;p) oznacza "w nastepnej linii jest reszta" 21:49 <@Gynvael> przykladoto 21:49 <@Gynvael> #define ala \ 21:49 <@Gynvael> ma \ 21:49 <@Gynvael> kota 21:50 <@Gynvael> wtedy wystapienie "ala" zostanie zastapione 21:50 * G0blin pytanie 21:50 <@Gynvael> ma 21:50 <@Gynvael> kota 21:50 <@Gynvael> ok 21:50 -!- BadPixel is now known as Pixello 21:50 <@Gynvael> G0blin: pytaj 21:50 -!- mode/#gynkurs [+mtnl 47] 21:50 <@G0blin> no wiec: 21:50 <@Gynvael> reszta tez moze 21:50 <@G0blin> on zdefiniuje to z 'enterem' ? 21:51 <@G0blin> innymi slowy w naszym przykladzie: 21:51 <@G0blin> ala== ma kota 21:51 <@G0blin> ala== ma \nkot 21:51 <@G0blin> ? 21:51 <@Gynvael> tak 21:51 <@Gynvael> dokladnie 21:51 <@G0blin> ktore ?:P 21:51 <@Gynvael> to drugie 21:51 <@G0blin> ok 21:51 <@G0blin> sprawdzilem 21:51 <@Gynvael> e 21:51 <@Gynvael> nie 21:51 <@Gynvael> w8 21:51 <@Gynvael> klamie cie 21:51 <@Gynvael> ;p 21:51 <@Gynvael> bez entera -- 21:51 <@G0blin> i skompilowalo sie bez warninga 21:51 <@G0blin> a dziala 21:52 <@Gynvael> ala== ma kota 21:52 <@G0blin> :P 21:52 <@Gynvael> o 21:52 <@Gynvael> ciekawe ;> 21:52 <@Gynvael> a kompilowales z -Wall -pedantic ? 21:52 <@G0blin> czyli po prostu jak nam sie linia konczy, albo jak chcemy, zeby ladnie wygladalo 21:52 <@G0blin> ofc nie :P 21:53 <@G0blin> moze byc gcc -wp ? 21:54 <@G0blin> nie ma w helpie wall ani pedantic :P 21:54 <@Gynvael> musza byc 21:54 <@Gynvael> ;> 21:54 <@Gynvael> ok 21:54 <@Gynvael> nvm 21:54 <@Gynvael> lecimy dalej ? 21:55 -!- ]Ce_Cztery[ [~BeOm_@avi120.neoplus.adsl.tpnet.pl] has quit [" HydraIRC -> http://www.hydrairc.com <- Try something fresh"] 21:55 <@Gynvael> dobra 21:55 <@Gynvael> wiec 21:55 <@G0blin> ok 21:55 <@Gynvael> #define mozna uzyc rowniez z parametrem 21:55 <@Gynvael> #define ala(a) puts(a) 21:55 <@Gynvael> na przykald tak 21:55 <@Gynvael> i zastosowanie 21:55 <@Gynvael> ala("ala ma kota"); 21:55 <@Gynvael> zostanie zamienione na 21:56 <@Gynvael> puts("ala ma kota"); 21:57 <@Gynvael> ok 21:57 <@Gynvael> mozna rowniez z paroma parametrami 21:57 <@Gynvael> np 21:57 <@Gynvael> #define ala(a,b,c) pust(a); puts(b); puts(c) 21:57 <@Gynvael> ala("ala","ma","kota"); 21:57 <@Gynvael> zostanie zamienione na 21:57 <@Gynvael> *puts tam powinno byc btw 21:57 <@Gynvael> puts("ala"); puts("ma"); puts("kota"); 21:58 <@Gynvael> teraz pare innych przykladow 21:58 <@Gynvael> nop 21:58 <@Gynvael> np 21:58 <@Gynvael> #define kwadrat(x) x*x 21:58 <@Gynvael> int i = kwadrat(2); 21:58 <@Gynvael> zostanie zamienione na 21:58 <@Gynvael> int i = 2*2; 21:59 <@Gynvael> ok 21:59 <@Gynvael> teraz jedna taka wazna rzecz 21:59 <@Gynvael> spojrzmy co sie stanie 21:59 <@Gynvael> jak zrobimy: 21:59 <@Gynvael> #define kwadrat(x) x*x 21:59 * G0blin pytanie 21:59 <@Gynvael> int i = 1, j; 21:59 <@Gynvael> j = kwadrat(i++); 22:00 <@Gynvael> mozna by sie spodziewac ze i po tym bedzie wynosic 2 22:00 <@Gynvael> wkoncu 1++ to 2 22:00 <@Gynvael> ale nie, poniewaz to zostanie zamienione na 22:00 <@Gynvael> j = i++ * i++; 22:00 <@Gynvael> czyli i++ jest dwa razy, wiec i = 3 22:00 <@Gynvael> to jest taka pulapka w ktora lepiej nie wpasc 22:00 <@Gynvael> bo mozna sie pociachac szukajac bledow ;> 22:00 <@Gynvael> ok 22:00 <@Gynvael> pytanka do define ? 22:01 -!- mode/#gynkurs [-m] by Gynvael 22:01 <@G0blin> a co jesli: 22:01 <@G0blin> mamy funkcje, ktora ma wiecej niz jeden parametr? 22:01 <@G0blin> na przyklad: 22:01 <@Gynvael> G0blin: np ? 22:01 <@G0blin> int dodaj(int x, int y); 22:01 <@G0blin> i co wtedy? 22:02 <@Gynvael> chodzi ci o uzycie dodaj w define ? 22:02 <@Gynvael> np 22:02 <@phoenix__> ile jest preprocesorow ( podstawowych) 22:02 <@G0blin> #define ala(x, y) dodaj (x, y) 22:02 <@G0blin> ? 22:02 <@Gynvael> G0blin: tak 22:02 <@Gynvael> ;> 22:02 <@G0blin> lok 22:02 <@phoenix__> ile jest preprocesorow ( podstawowych)?? 22:02 <@Gynvael> G0blin: mozesz nawet #define ala(x) dodaj(2,x) 22:02 <@Gynvael> phoenix__: ja znam jeden ;> 22:02 <@G0blin> wo 22:02 <@G0blin> nice 22:02 <@G0blin> i flexible :] 22:03 <@G0blin> ^^ 22:03 <@G0blin> czyli rozumiem, ze mozna tez tak: 22:03 <@bubel> hmm jest tutaj pan unknow ? 22:03 <@G0blin> #define ala(a, z, x) dodaj(a, z) 22:03 <@phoenix__> o Gynvael makly oftop na temt GDB 22:03 <@phoenix__> jak to z disasemblowac ?:> 22:03 <@unknow> bubel: jestem 22:03 <@G0blin> albo: 22:04 <@G0blin> #define ala(a, z, x) x*(dodaj(a, z)) 22:04 <@G0blin> ? 22:04 <@Gynvael> phoenix__: tzn ?;> 22:04 <@phoenix__> Gynvael: robil GDB plik core i nic 22:04 <@phoenix__> blad mi wyskakuj 22:04 <@Gynvael> G0blin: mozna tak 22:04 <@phoenix__> e 22:04 <@Gynvael> G0blin: oba 22:04 <@Gynvael> jeszcze jedna rzecz 22:04 <@G0blin> no questions 22:04 <@Gynvael> #define ala(a,z,x) 22:04 <@Gynvael> tak tez mozna 22:04 <@Gynvael> i to po prostu wywali uzycie danej funkcji z kodu ;p 22:05 <@Gynvael> tzn zastapi to niczym 22:05 <@Gynvael> ;> 22:05 <@Gynvael> ale trzeba uwazac 22:05 <@Gynvael> np jesli bylo jakies 22:05 <@phoenix__> Gynvael: to jak inczej ? 22:05 <@G0blin> phoenix__: nie przerywaj :P 22:05 <@Gynvael> int i = ala(1,2,3); to mozna dostac syntax error (bo to bedzie zmienione int i = ;) 22:05 <@G0blin> aha 22:05 <@Gynvael> phoenix__: e-e a co chcesz zrobic ? 22:05 <@G0blin> a to jest stosowane w jakichs sztuczkach? 22:06 <@G0blin> ( #define ala(x, y, z) 22:06 <@G0blin> ) 22:06 <@Gynvael> czasem jest stosowane 22:06 <@Gynvael> nie umiem teraz zadnej konkretnej sztuczki podac 22:06 <@phoenix__> Gynvael: mialem jakis buffer overflow i chcialem go zdisasemblowac 22:06 <@Gynvael> ale pare razy zdarzylo mi sie uzyc 22:07 <@Gynvael> phoenix__: a masz "ulimit -c unlimited" zrobione w konsoli ? zeby ci sie core tworzyl 22:07 <@G0blin> Gynvael: chodzi mi o ten konkretny przyklad, gdy nic sie nie podstawia pod ala(x, y) 22:07 <@G0blin> wole sie upewnic bo raczej sie spodziewalem odpowiedzi negatywnej :P 22:08 <@phoenix__> Gynvael: a ci ti ? :> 22:08 <@phoenix__> co to 22:08 <@Gynvael> G0blin: nei tyle nic sie nie podstawia, co podstawia sie nic ;p 22:08 <@Gynvael> #define a 22:08 <@Gynvael> a + b + c; 22:08 <@Gynvael> bedzie zamienione na 22:08 <@Gynvael> + b + c; 22:09 <@G0blin> tak, tak 22:09 <@Gynvael> phoenix__: no zeby plik core byl zrzucony 22:09 <@G0blin> rozumiem :P 22:09 <@Gynvael> phoenix__: musi byc ulimit -c ustawiony na unlimited 22:09 <@Gynvael> G0blin: e-e to ja sie zgubilem 22:09 <@phoenix__> Gynvael: to chyba nie 22:09 <@phoenix__> no dobra to potem 22:10 <@Gynvael> phoenix__: to wklep to w konsoli i jeszcze raz odpal ten program 22:10 <@Gynvael> ok 22:10 <@Gynvael> jedziemy dalej ? 22:11 <@phoenix__> kk 22:12 <@phoenix__> wyskauje mi ze nie ma core 22:12 <@phoenix__> a nie jest ;] 22:13 -!- mode/#gynkurs [+m] by Gynvael 22:13 <@Gynvael> ok 22:13 <@Gynvael> lecimy dalej 22:13 <@Gynvael> teraz pare innych rzeczy 22:13 <@Gynvael> mianowicie czesto uzywane #ifdef 22:14 <@Gynvael> #ifdef 22:14 <@Gynvael> costam 22:14 <@Gynvael> #else 22:14 <@Gynvael> costma 22:14 <@Gynvael> #endif 22:14 <@Gynvael> jak to dziala 22:14 <@Gynvael> dosc prosto, mianosicie jesli jest zdefiniowana NAZWA (bez tych < > btw) 22:14 <@Gynvael> to wtedy do kodu wrzuca tylko text miedzy "#ifdef NAZWA" a "#else" 22:15 <@Gynvael> a jesli nie to miedzy "#else" a "#endif' 22:15 <@Gynvael> np 22:15 <@Gynvael> #define ala 22:15 <@Gynvael> #ifdef ala 22:15 -!- XAOS [~xaos@213-238-98-169.adsl.inetia.pl] has joined #gynkurs 22:15 <@Gynvael> puts("ala ma kota"); 22:15 <@Gynvael> #else 22:15 -!- XAOS is now known as X405 22:15 <@Gynvael> puts("kot ma ale"); 22:15 <@Gynvael> #endif 22:15 <@Gynvael> (czesc xa ;>) 22:15 <@Gynvael> po zrobieniu gcc -E 22:16 <@Gynvael> zobaczymy tylko puts("ala ma kota"); 22:16 <@Gynvael> jako ze "ala" jest zdefiniowane 22:16 <@Gynvael> natomist gdyby ala nie bylo zdefiniowane 22:16 <@Gynvael> w kodzie bylo by tylko puts("kot ma ale"); 22:16 <@Gynvael> do kolekcji jest jeszcze #ifndef 22:16 -!- mode/#gynkurs [+o X405] by phoenix__ 22:16 <@Gynvael> czyli "if not defined" 22:17 -!- mode/#gynkurs [+oo Pixello White_elluck] by G0blin 22:17 <@Gynvael> ma ktos linka do logow z poprzednich kursow ? 22:17 <@phoenix__> topic 22:17 <@Pixello> lol 22:18 * G0blin pytanie 22:18 <@phoenix__> napalona.renia.beger.com/~adam/gynkurs/ 22:18 <@X405> jaki topic? 22:18 <@Gynvael> phoenix__: thx 22:18 <@X405> thx :) 22:18 -!- Gynvael changed the topic of #gynkurs to: napalona.renia.beger.com/~adam/gynkurs/ 22:18 <@phoenix__> kiedy edzie reverse engeneering? 22:19 -!- G0blin changed the topic of #gynkurs to: prelekcja w toku, prosimy o cisze || logi na: napalona.renia.beger.com/~adam/gynkurs/ 22:19 <@Gynvael> ;> 22:19 <@G0blin> phoenix__: jutro zaczynamy asma 22:19 <@Gynvael> phoenix__: jeszcze sporo 22:20 <@phoenix__> G0blin: nie jutro 22:20 <@phoenix__> szkoda 22:20 <@Gynvael> nie jutro 22:20 <@Gynvael> za tydzien 22:20 <@Gynvael> ok 22:20 <@Gynvael> lecimy dalej 22:20 <@Gynvael> co do zastosowan tego #ifdef etc 22:21 <@Gynvael> w plikach .h jakos tak wyszlo ze ZAWSZE sie daje cos takiego: 22:21 <@Gynvael> #ifndef PLIK__H 22:21 <@Gynvael> #define PLIK__H 22:21 <@Gynvael> tutaj wszystko... 22:21 <@Gynvael> #endif 22:21 <@Gynvael> dzieki temu zapobiega to roznym rekursyjnym includa 22:21 <@Gynvael> zalozmy ze nie dali bysmy kiedys tego 22:21 <@Gynvael> i zalozmy ze mamy pliki a.h b.h i c.h 22:22 <@Gynvael> a.h zawiera #include b.h 22:22 <@Gynvael> b.h zawiera #include c.h 22:22 <@Gynvael> a c.h zawiera #include a.h 22:22 -!- White_elluck [~elluck@aye142.neoplus.adsl.tpnet.pl] has left #gynkurs [Kopete 0.8.4 : http://kopete.kde.org] 22:22 <@Gynvael> czyli preprocesor by sie wywalil bo by sie po prostu zapetlil 22:22 <@Pixello> http://img235.imageshack.us/my.php?image=9770645ic.jpg 22:22 -!- mode/#gynkurs [+b *!*vircuser@*.neoplus.adsl.tpnet.pl] by Blizzard 22:22 -!- Pixello was kicked from #gynkurs by Blizzard [nara] 22:23 <@Gynvael> natomiast jesli byl by dany naglowek #ifndef/#define i koncowka #endif 22:23 -!- mode/#gynkurs [-bb *!*vircuser@*.neoplus.adsl.tpnet.pl *!filq@*] by G0blin 22:23 <@Gynvael> .. 22:23 <@Gynvael> nie bawic sie 22:23 <@Gynvael> to by mozna tego uniknac 22:23 <@Blizzard> nie sciaga sie nie swoich banow G0blin ;) 22:23 <@Gynvael> jako ze przy pierwszym odpaleniu a.h bylo by zdefiniowane A__H 22:23 <@G0blin> Blizzard: nie daje sie banow na nie swoim kanale 22:23 <@G0blin> a teraz ciii i sluchaj 22:23 <@phoenix__> teraz kto sie odezwie -o 22:24 <@Gynvael> wiec gdy c.h zrobil by include a.h, nie byl by spelniony warunek #ifndef A__H, wiec drugi raz by nie byl includowany 22:24 <@Gynvael> ok 22:24 * G0blin pytanie 22:24 <@Gynvael> G0blin: w8 jeszcze chwila 22:25 <@Gynvael> drugim zastosowaniem #ifdef jest tworzenie programow 22:25 <@Gynvael> ktore dzialaja pod paroma platformami 22:25 <@Gynvael> albo z paroma roznycmi zalozeniami 22:25 <@Gynvael> przykladowo 22:25 <@Gynvael> zalozmy ze piszemy program pod linuxa i winde 22:25 <@Gynvael> i ze pod linuxem wymaga bibliotek a.h i b.h 22:25 <@Gynvael> (tzn headerkow bibliotek ofc ;>) 22:25 <@Gynvael> a pod winda c.h 22:26 <@Gynvael> wtedy mozna skorzystac z #ifdef i PREDEFINIOWANYCH MARK KOMPILATORA 22:26 * G0blin pytanie bardzo glebokie tym razem ^^ 22:26 <@Gynvael> w przypadku windowsa prefediniowane jest WIN32 22:26 <@Gynvael> a w przypadku linux predefiniowane jest __unix__ 22:26 <@Gynvael> np 22:26 <@Gynvael> dla powyzszego przypadku 22:27 <@Gynvael> #ifdef __unix__ 22:27 <@Gynvael> #include 22:27 <@Gynvael> #include 22:27 <@Gynvael> #else 22:27 <@Gynvael> #include 22:27 <@Gynvael> #endif 22:27 <@Gynvael> albo 22:27 <@Gynvael> #ifdef WIN32 22:27 <@Gynvael> #include 22:27 <@Gynvael> #else 22:27 <@Gynvael> #include 22:27 <@Gynvael> #include 22:27 <@Gynvael> #endif 22:28 <@Gynvael> natomiast problem zaczyna sie gdy piszemy dla paru platform 22:28 <@Gynvael> wtedy korzystamy nie z #ifdef 22:28 <@Gynvael> tylko z #if defined(nazwa) 22:28 <@Gynvael> i #elif defined(naza) 22:28 <@Gynvael> przykladowo 22:28 <@Gynvael> #if defined(WIN32) 22:28 <@Gynvael> #incldue 22:29 <@Gynvael> #elif defined(__unix__) 22:29 <@Gynvael> #include #include 22:29 <@Gynvael> #include 22:29 <@Gynvael> #else 22:29 <@Gynvael> #error Twoja platforma jest niesupportowana =^^= 22:29 <@Gynvael> #endif 22:29 <@Gynvael> pojawila sie tu nowa dyrektywa - #error 22:30 <@Gynvael> w momencie kiedy preprocesor natknie sie na ta dyrektywe, kompilator generuje blad (ten podany jako parametr) i konczy kompilacje (przerywa, wkoncu jest blad) 22:30 <@Gynvael> powyzej widac jedno z zastosowan 22:30 <@Gynvael> analogiczna dyrektywa jest #warning, generuje ona ostrzezenie 22:31 <@Gynvael> co do #if 22:31 <@Gynvael> mozna rowniez robic: 22:31 <@Gynvael> #if nazwa==12 22:31 <@Gynvael> #if nazwa>12 22:31 <@Gynvael> #if nazwa<12 22:31 <@Gynvael> #if nazwa>12 && defined(xxx) 22:31 <@Gynvael> dziala to jak normalny if 22:31 <@Gynvael> przykladowo 22:31 <@Gynvael> #if WERSJA_JAKIEGOS_LIBA < 10 22:31 <@Gynvael> #error musisz miec zainstalowana przynajmniej wersje 10 liba JAKIS_LIB 22:31 <@Gynvael> #endif 22:32 <@Gynvael> zakladajac ze mamy zdefiniowane gdzies WERSJA_JAKIEGOS_LIBA 22:32 -!- Topic for #gynkurs: prelekcja w toku, prosimy o cisze || logi na: napalona.renia.beger.com/~adam/gynkurs/ 22:32 -!- Topic set by G0blin [~Goblin@dnt8.neoplus.adsl.tpnet.pl] [Mon Sep 12 22:19:12 2005] 22:32 <@Gynvael> ok 22:33 <@Gynvael> teraz pytanka, a za chwile o PREDEFINIOWANYCH bajekrach ;> 22:33 <@Gynvael> i o # oraz ## 22:33 -!- mode/#gynkurs [-m] by Gynvael 22:33 <@Gynvael> pytania ? 22:33 <@G0blin> sa 22:33 <@G0blin> czy tak sie laczy wieksze projekty? 22:33 <@G0blin> czy jest jakis lepszy sposob? :> 22:34 <@Gynvael> glownie tak 22:34 <@Gynvael> tzn "laczy" 22:34 <@Gynvael> co rozumiesz przez to ? 22:34 <@G0blin> linker laczy :P 22:34 <@G0blin> wiem :] 22:34 <@phoenix__> czy to __unix__ i WIN32 to sam kompilator rozpoznaje ?? 22:34 <@Gynvael> phoenix__: nie do konca 22:34 <@G0blin> phoenix__: to zmienne 22:34 <@Gynvael> phoenix__: on nie rozpoznaje 22:34 <@G0blin> Gynvael: a teraz glebsze pytanie 22:35 <@Gynvael> phoenix__: po prostu pod linuxem kompilator ma powiedziane ze zawsze ma byc zmienna __unix__ 22:35 <@G0blin> jak zaczales o tych platformach 22:35 <@Gynvael> a pod winda WIN32 22:35 -!- sliwa [~snOOpy149@dgd5.neoplus.adsl.tpnet.pl] has joined #gynkurs 22:35 <@phoenix__> aha 22:35 < sliwa> hi ya 22:35 <@Blizzard> sliwa: cii 22:35 <@G0blin> to tam bylo, ze include to, include tamto :P 22:35 <@Blizzard> wyklad jest 22:35 <@phoenix__> hi ya i siedz cicho jak jest +m 22:35 < sliwa> Blizzard why? 22:35 <@G0blin> a zalozmy, ze biblioteka ma inne funkcje dla win i lnx 22:35 <@G0blin> co wtedy? :> 22:35 <@Blizzard> sliwa: no wyklad 22:36 <@Blizzard> tu jak jest +m 22:36 <@G0blin> piszesz tak jak z ala dla wszystkich odpowiedniki ? 22:36 <@Blizzard> to Gynvael tlumaczy 22:36 < sliwa> ok poczytam juz nie przeszkadzam :) 22:36 <@Blizzard> jak -m to mozna pytac;P 22:36 <@Gynvael> G0blin: pozwole sobie ciebie odeslac do przykladu 22:36 <@Gynvael> http://gynvael.vexillium.org/?stuff=ircbot.stuff 22:36 <@G0blin> lok 22:36 <@Gynvael> to przykladowy bot ircowy 22:36 <@Gynvael> dzialajacy i pod linuxem i pod winda 22:36 <@G0blin> lubie przyklady :] 22:37 <@Gynvael> przykladowo na linuxie jest uzywana komenda "close" do zamykania socketow 22:37 <@Gynvael> a pod winda "closesocket" 22:37 <@Gynvael> ta roznica jest define'em zalatwiona 22:37 <@G0blin> czyli tak jak myslalem 22:37 <@G0blin> ale...... 22:37 <@Gynvael> natomiast pod winda dodatkowo trzeba zainicjowac winsock 22:37 <@Gynvael> a to jest zalatfione #ifdef WIN32 22:37 <@Gynvael> #ifdef WIN32 /* wlacz winsocka */ if( WSAStartup( 0x0101, &wsdat ) ) /* wersja przynajmniej 1.1 */ 22:38 <@Gynvael> (eh entery...) 22:38 <@Gynvael> w przykaldzie ladnie jest 22:38 <@G0blin> jeszcze jedno pytanko :] 22:38 <@Gynvael> teraz co do platform i kompilatorow 22:38 <@Gynvael> co predefiniuja 22:38 <@G0blin> ostatno sie wlasnie z kumplem klucilem 22:38 <@G0blin> bo on pod winde pisze 22:38 <@Gynvael> to was odesle do genialnego sajta: http://predef.sourceforge.net/ 22:38 <@G0blin> a ja pod lnx 22:38 -!- _absent_ [_absent_@m418-mp2.cvx1-b.pop.dial.ntli.net] has joined #gynkurs 22:38 < _absent_> hi 22:38 <@G0blin> i sie klucilismy gdzie jest system("") 22:38 <@G0blin> ja mowilem, ze jest w stl 22:38 <@Gynvael> hi 22:39 <@G0blin> i sie nie pomylilem :P 22:39 <@Gynvael> G0blin: ne, nie jest w stl ;> 22:39 <@G0blin> ale jak sprawdzilem, co on za glupoty gada 22:39 <@G0blin> to mial racje 22:39 <@G0blin> pod winem sie nie kompiluje 22:39 <@G0blin> i o co chodzi? :P 22:39 <@G0blin> to troche abstrachuje od tematu, ale zaraz powroce :P 22:40 <@Gynvael> niektore rzeczy sie roznia pod linuxem i pod winda 22:40 <@Gynvael> szczegolnie jesli chodzi o rozmieszczenie niektorych funkcji po bibliotekach 22:40 <@Gynvael> wtedy wlasnie fajnie jest sobie #if defined(WIN32) ... zrobic 22:40 <@Gynvael> etc 22:40 <@G0blin> no i wlasnie co z takimi fantami sie robi :] 22:41 <@Gynvael> trzeba wiedziec co i jak 22:41 <@Gynvael> jak wielkie roznice sa 22:41 <@Gynvael> jesli tylko inny #include 22:41 <@Gynvael> to po prostu zrobic #ifdef WIN32 #include to, #else #include tamto 22:41 <@Gynvael> #endif ;p 22:41 <@Gynvael> natomiast jesli roznica jest duza 22:42 <@Gynvael> np rozne parametry etc 22:42 <@G0blin> Gynvael: czyli innymi slowy musze wiedziec co i jak w headerah windowych i unixowych? 22:42 <@Gynvael> to wtedy robi sie tzw wraper 22:42 <@G0blin> a najlepiej wszystko na pamiec...... 22:42 <@Gynvael> G0blin: tak, wypada 22:42 <@Gynvael> G0blin: yep 22:42 <@Gynvael> ;> 22:42 <@G0blin> :/ 22:42 <@Gynvael> G0blin: ale tego sie nie wykuwa 22:42 <@G0blin> ciezkie jest zycie codera 22:42 <@G0blin> wiem, wiem 22:42 <@Gynvael> G0blin: raz sprawdzisz to zapamietasz 22:42 <@Gynvael> ;> 22:42 <@G0blin> z czasem przychodzi samo :P 22:42 <@G0blin> aha ^^ 22:42 <@G0blin> no tak :] 22:43 <@Gynvael> ok 22:43 <@Gynvael> lecimy dalej ? 22:43 <@G0blin> dziwi mnie, ze jeszcze mnie nie nienawidzisz za miliony pytan, ktore zadaje :P 22:43 <@Gynvael> ;pppppp 22:43 <@G0blin> jeszcze jedno 22:43 <@G0blin> jak nie bede wiedzial, ze cos sie rozni 22:43 <@phoenix__> gyn jest wyrozumialy ;P 22:43 <@G0blin> i nie uwzglednie tego 22:43 <@G0blin> to wtedy po prostu kompilator nie bedzie wiedzial co to jest? 22:44 <@Gynvael> yepo 22:44 <@Gynvael> i bedziesz mial blad 22:44 <@Gynvael> trzeba testowac 22:44 <@Gynvael> jedyne wyjscie 22:44 <@G0blin> tak jakbym nagle wpisal: blablabla==09 22:44 <@G0blin> :] 22:44 <@phoenix__> G0blin: ja znalazlem rozwiazanie 22:44 <@G0blin> phoenix__: jakie rozwiazanie, czego? :> 22:45 <@phoenix__> z tym WIN32 i __unix__ 22:45 <@Gynvael> hmm 22:45 <@Gynvael> moge jechac dalej ?;> 22:45 <@phoenix__> yep 22:45 <@Gynvael> ok 22:45 <@G0blin> dla mnei yes 22:45 -!- mode/#gynkurs [+m] by Gynvael 22:45 <@phoenix__> btw 22:45 <@phoenix__> 1 mone 22:45 <@phoenix__> t 22:45 <@G0blin> +m :P 22:45 <@phoenix__> w8 22:45 <@phoenix__> KTO SLUCHA NIECH SIE ODEZWIE 22:45 -!- mode/#gynkurs [-m] by G0blin 22:45 <@phoenix__> tylko nas 2 jest ? :> 22:45 <@G0blin> moze _absent_ slucha 22:45 <@G0blin> :P 22:46 <@phoenix__> chyba nas 2 22:46 < sliwa> slucham ;) 22:46 <@G0blin> o widzisz... 22:46 <@phoenix__> 3 ;] 22:46 <@G0blin> a teraz ciiiiiii 22:46 <@G0blin> 4 22:46 <@phoenix__> dalej 22:46 <@G0blin> jeszcze Gynvael 22:46 < sliwa> Blizzard tez slucha ;] 22:46 -!- mode/#gynkurs [+m] by G0blin 22:46 <@Blizzard> ;] 22:46 <@Gynvael> ;> 22:46 <@G0blin> 5 22:46 <@Gynvael> ok 22:46 <@G0blin> gyn nawijaj :] 22:46 <@Gynvael> ok 22:46 <@Gynvael> teraz tak 22:47 <@Gynvael> pare parametrow do gcc 22:47 <@Gynvael> ktore dotycza preprocesora: 22:47 <@Gynvael> gcc -D asdf 22:47 <@Gynvael> gcc -D asdf plik.c 22:47 <@Gynvael> o tak;> 22:48 <@Gynvael> -D asdf - to spowoduje dokladnie to samo co "#define asdf" na poczatku pliku plik.c 22:48 <@Gynvael> gcc -D asdf=xxx plik.c 22:48 <@Gynvael> -D asdf=xxx - to spowoduje dokladnie to samo co "#define asdf xxx" na poczatku pliku plik.c 22:48 <@Gynvael> gcc -U WIN32 plik.c 22:48 <@Gynvael> to spowoduje to samo co #undef WIN32 na poczatku pliku 22:48 <@Gynvael> btw zapomnialem o undef ;> 22:48 <@Gynvael> #undef nazwa 22:48 -!- andi^ [~andi-16@bxb30.neoplus.adsl.tpnet.pl] has joined #gynkurs 22:48 <@Gynvael> powoduje wywalenie z pamieci preprocesora define'u nazwa 22:49 <@Gynvael> ok 22:49 <@Gynvael> teraz dalej 22:49 <@Gynvael> gcc -undef plik.c 22:49 <@Gynvael> to powoduje ze zadne WIN32, __unix__ etc nie sa predefiniowane 22:49 <@Gynvael> raczej z tego nie bedziecie korzystac za duzo ;> 22:49 <@Gynvael> o -I sciezka juz mowilem 22:49 <@Gynvael> ;> 22:50 <@G0blin> -I mowiles? 22:51 <@G0blin> mowiles :P 22:51 <@G0blin> sry :P 22:51 <@phoenix__> include 22:51 <@Gynvael> ;> 22:51 <@Gynvael> ok 22:51 <@Gynvael> lecimy dalej 22:51 <@Gynvael> pare ciekawych predefiniowanych zmiennych: 22:51 <@Gynvael> __FILE__ 22:51 <@Gynvael> nazwa pliku ;> 22:51 <@Gynvael> np 22:52 <@Gynvael> zalozmy ze w plik.c mamy puts(__FILE__) 22:52 <@Gynvael> wtedy zostanie to zamienione na puts("plik.c") 22:52 -!- sliwa is now known as iHATEyou 22:52 <@Gynvael> (do debugu bardzo dobre ;>) 22:53 <@Gynvael> drugim ciekawym makrem jest __LINE__ 22:53 <@Gynvael> to jest numer linii (obecnej instrukcji) 22:53 <@Gynvael> np 22:53 <@Gynvael> zalozmy ze w 3ciej linii mamy 22:53 <@Gynvael> printf("linia nr %i", __LINE__); 22:53 <@Gynvael> to zostanie zmienione na 22:53 <@Gynvael> printf("linia nr %i", 3); 22:53 <@Gynvael> czyli zostanie wypisane "linia nr 3" 22:54 <@Gynvael> po za tym na roznych kompilatorach sa jeszcze rozne __DATE__ etc 22:54 <@Gynvael> natomiast o nich mozecie poczytac na sajcie o ktorym czesniej wspominalem 22:54 <@Gynvael> czyli http://predef.sourceforge.net/ 22:55 <@Gynvael> ok 22:55 <@Gynvael> i teraz jeszcze jedna ciekawa rzecz 22:55 <@Gynvael> mianowicie w #define mozemy uzywac dwa speciajne znaki 22:55 <@Gynvael> (Czy tez ciagi znakow) 22:55 <@Gynvael> # i ## 22:55 <@Gynvael> przykladowo 22:55 <@Gynvael> #define ala(x) #x 22:56 <@Gynvael> puts( ala(asdf) ); 22:56 <@Gynvael> to zostanie zamienione na 22:56 <@Gynvael> puts( "asdf" ); 22:56 <@Gynvael> czyli #x zamienia x na "x" 22:56 <@Gynvael> ;> 22:56 * G0blin pytanie 22:56 <@Gynvael> z tym ze nie mozna zrobic: 22:56 <@Gynvael> puts( ala(__LINE__) ) 22:56 <@Gynvael> poniewaz dostaniemy 22:56 <@Gynvael> puts( "__LINE__" ) 22:57 <@Gynvael> rozwiazanei jakie znalazlem brzmialo 22:57 <@Gynvael> #define str(x) #x 22:57 <@Gynvael> #define ala(x) str(x) 22:57 <@Gynvael> puts( ala(__LINE__) ) 22:57 <@Gynvael> czyli to zostalo zamienione na 22:57 <@Gynvael> puts( str(4) ) 22:57 <@Gynvael> puts( "4" ) 22:57 <@Gynvael> tym sie po prostu trzeba pobawic;> 22:58 <@Gynvael> dosc fajnym bajerem jest np makro do logowania bledow 22:59 <@Gynvael> #define str1(x) #x 22:59 <@Gynvael> #define str(x) str1(x) 23:00 <@Gynvael> #define blad(x) puts(__FILE__ ":" str(__LINE__) " " x) 23:00 <@Gynvael> uzywa sie 23:00 <@Gynvael> blad("ala ma kota"); 23:00 <@Gynvael> i uzyskuje efekt 23:00 <@Gynvael> gk8_1.c:12 ala ma kota 23:00 <@Gynvael> http://gynvael.vexillium.org/gk8_1.c 23:01 <@Gynvael> ok 23:01 <@Gynvael> druga rzecza jest ## 23:01 <@Gynvael> ktore sluzy do laczenia wartosci dwoch rzeczy 23:01 <@Gynvael> np 23:02 * G0blin => kawa [brb] 23:03 <@Gynvael> #define zmienna(a, b) a ## b 23:03 <@Gynvael> to laczy wartosc wyrazenia a z b 23:03 <@Gynvael> np 23:03 -!- andi^ [~andi-16@bxb30.neoplus.adsl.tpnet.pl] has quit [Connection reset by peer] 23:03 <@Gynvael> int zmienna(ala, 2) = 3; 23:03 <@Gynvael> w takim wypadku uzywskamy 23:03 <@Gynvael> zamiast zmienna(ala, 2): 23:03 <@Gynvael> int ala2 = 3; 23:03 <@Gynvael> czyli po prostu ala zostalo polaczone z 2 23:03 <@Gynvael> ;> 23:04 <@Gynvael> to w sumie bardzo rzadko sie uzywa btw ;> 23:04 <@Gynvael> ok 23:04 <@Gynvael> tyle 23:04 -!- _absent_ [_absent_@m418-mp2.cvx1-b.pop.dial.ntli.net] has quit [Ping timeout] 23:04 <@Gynvael> pytania ? 23:04 -!- mode/#gynkurs [-m] by Gynvael 23:04 <@phoenix__> hmm 23:05 <@G0blin> co w przypadku: 23:05 <@G0blin> #if define winblabla 23:05 <@G0blin> zdefiniuje winblabla 23:05 <@G0blin> ? 23:05 <@Gynvael> ( #if define(winblabla) jak juz) 23:05 <@Gynvael> tzn ? 23:05 <@phoenix__> to ## rowna sie + ?:> 23:05 <@Gynvael> phoenix__: no nie do konca ;> 23:05 <@G0blin> tzn, ze jak jest pusty #if 23:06 <@G0blin> bez niczego 23:06 <@G0blin> czy go przepuszcza 23:06 <@Gynvael> G0blin: ne 23:06 <@Gynvael> tyo syntax error bodajze 23:06 <@G0blin> aha 23:06 <@Gynvael> a 23:06 <@Gynvael> btw 23:06 <@Gynvael> #if !define(asdf) 23:06 <@Gynvael> tak tez mozna robic 23:06 <@Gynvael> ! && || 23:06 <@Gynvael> te mozna uzywac 23:06 <@Gynvael> i nawiasy 23:06 <@G0blin> tego z # i ## wcale nie lapie, ale jak przeczytam i bede mniej zmeczony powinno byc ok 23:07 <@G0blin> a teraz ide wpompowac kawe :P 23:07 <@G0blin> (4-ta dzis) 23:07 <@Gynvael> ;> 23:07 <@Gynvael> hhehe 23:07 <@Gynvael> ok 23:07 <@Gynvael> jeszcze jakies pytania ? 23:07 <@phoenix__> Gynvael: czemny nie do konca ? :> 23:07 <@Gynvael> jesli nei to na dzisaij koniec 23:07 <@Gynvael> phoenix__: to po prostu laczy dwie rzeczy 23:07 <@Gynvael> ;> 23:07 <@Gynvael> nie mozna napisac #define x(a,b) ab 23:07 <@Gynvael> bo nie ma ab ;> 23:07 <@Gynvael> wiec trzeba a ## b 23:07 <@phoenix__> a ciag znakow tez ? :> 23:07 <@Gynvael> przy ciagach znakow nie trzeba uzywac ## ;> 23:08 <@Gynvael> "ala" " ma kota" 23:08 <@Gynvael> to to samo co 23:08 <@Gynvael> "ala ma kota" 23:08 <@phoenix__> aha ;] 23:08 <@phoenix__> racja 23:08 <@Gynvael> o tym bylo 23:08 <@Gynvael> ;> 23:08 <@Gynvael> ok jeszcze jakies pytanka ? 23:08 <@Gynvael> jesli nie tyo koneic na dzisiaj ;> 23:08 <@Gynvael> i zobaczymy sie w srode 23:08 <@Gynvael> bedzie obsluga plikow + stdin/stdout 23:08 <@phoenix__> aha 23:08 <@phoenix__> to logi gyn masz? 23:08 <@Gynvael> a next week w poniedzialek prawdopodobnie asm bedzie 23:08 <@Gynvael> tak mam 23:09 <@phoenix__> i too ;] 23:09 <@Gynvael> phoenix__: umiesc gdzies jesli masz gdzie ;> 23:09 <@Gynvael> i wrzuc linka w topic 23:09 <@Gynvael> ok ja na dzisiaj dziekuje w takim razie ;> 23:09 <@Gynvael> pobawcie sie tym 23:09 <@Gynvael> ;> 23:09 <@phoenix__> ale jak ktos moze to na inny serw 23:09 <@phoenix__> bo m34l byc nie stabilny 23:09 <@Gynvael> narazie wrzuc na tem 23:09 <@Gynvael> potem sie adama poprosti 23:09 <@phoenix__> to koniec logow 23:10 <@phoelog> end of logs 23:10 <@Gynvael> ;> 23:10 -!- phoelog [~phoenix@cdx188.neoplus.adsl.tpnet.pl] has quit ["bye "] 23:10 <@G0blin> s8 23:10 <@G0blin> w8 23:10 <@G0blin> a teraz mam takie pytanko 23:10 <@G0blin> ja wiem, ze to wymaga od Ciebie kupe cierpliwosci Gynvael 23:11 <@G0blin> (sam probowalem uczyc w mojej klasie i na ircu :P) 23:11 <@G0blin> ale mimo wszystko sie chcialem zapytac, czy moze nie bedzie 'dodatkowej' lekcji asma :P 23:11 <@G0blin> czyli w week 2*C + asm 23:12 <@phoenix__> dziwnie ten bx lgouje 23:12 <@phoenix__> Gynvael: to jak bedzie ? :> 23:13 <@Gynvael> moze bedzie 23:13 <@Gynvael> zobaczymy 23:13 <@Gynvael> ;> 23:13 <@G0blin> udaje, ze go nie ma, bo jest uprzejmy i nie chce powiedziec nie :P 23:13 <@G0blin> o jestes :] 23:13 <@phoenix__> a jakby bylo to kiedy ? 23:13 <@Gynvael> nie wiem 23:13 <@Gynvael> next week sie ustali 23:13 <@Gynvael> ;> 23:13 <@G0blin> phoenix__: najpierw czy, potem kiedy 23:14 <@G0blin> i jeszcze chcialem zwrocic uwage na taka rzecz :P 23:14 <@G0blin> za wczesnie :P 23:14 <@G0blin> juz mi sie wszystko miesza :] 23:14 <@G0blin> ze coraz mniej ludzi przychodzi :P 23:14 <@G0blin> teraz dobrze z :P 23:14 <@G0blin> :] 23:15 <@Gynvael> anom 23:15 <@Gynvael> ciekawe;> 23:15 <@phoenix__> Gynvael: beda powtorki w weekend? 23:15 <@Gynvael> ale to co 23:15 <@Gynvael> ;> 23:15 <@Gynvael> nie wiem 23:15 <@Gynvael> ;> 23:15 <@Gynvael> zobaczymy 23:15 <@Gynvael> hehehe 23:15 <@phoenix__> przydalby sie 23:15 <@G0blin> phoenix__: powtorki? 23:15 <@phoenix__> kurde ale te logi ble l/ 23:15 <@phoenix__> ;/ 23:15 <@G0blin> a wiecie co mi sie przytrafilo? 23:15 <@G0blin> ostatnio mojego kumpla C uczylem 23:15 <@G0blin> ale sie zaskoczylem 23:16 <@G0blin> bylem zaskoczony* 23:16 <@G0blin> lapal wszystko w lot :P 23:16 <@Gynvael> ehhe dobra 23:16 <@Gynvael> ja lece 23:16 <@Gynvael> bede jutro ;> 23:16 <@Gynvael> ;> 23:16 <@Gynvael> nice 23:16 <@G0blin> (moja klasa to same glaby) 23:16 <@G0blin> no nvm 23:16 <@G0blin> gadam juz od rzeczy 23:16 <@G0blin> cU 23:16 <@phoenix__> cya