Witaj w polskich Wikibooks!

edytuj

Cieszymy się, że udało Ci się do nas dołączyć! Na początek polecamy przydatne strony pomocy:

Poniżej znajdują się dalsze, użyteczne dla użytkownika strony

Śmiało edytuj strony i pamiętaj, że zawsze możesz liczyć na pomoc innych użytkowników.

Chcąc skontaktować się z innym wikipedystą, wpisuj się na stronę jego dyskusji - wtedy dana osoba otrzyma komunikat o wiadomości i będzie mogła Ci odpowiedzieć. Zapraszamy również na IRC-a: #wikibooks-pl. Aktywnych edytujących zobaczysz na ostatnich zmianach. W sprawach projektu dyskutuj w Barze.

Zapoznaj się proszę z Wikibooks:Portal użytkowników i przeczytaj tam wskazane artykuły, aby ten projekt używać zgodnie z wytycznymi. Nie kopiujemy materiałów objętych prawami autorskimi, tzn. nie wstawiamy tu tekstów należących do kogoś bez jego zgody.

Należy sobie przypomnieć, że Wikibooks to miejsce dla otwartych podręczników tworzonych przez Wikipedystów, nie umieszczamy tu informacji o innych książkach.

Przy okazji, jeśli spodobało ci się Wikibooks, poleć nas swoim znajomym - potrzebujemy promocji i rąk do pracy.

Mamy nadzieję, że zostaniesz z nami na dłużej! Odwiedź: Jak przeglądać Wikibooks,a także: Zasady i wskazówki, by skutecznie samemu lub z pomocą innych, rozwiązywać swoje problemy na tym serwisie! Mamy nadzieję, że zostaniesz z nami na dłużej! Wcelu poznania niektórych mechanizmów składni MediaWiki możesz bez edycji kliknąć edytuj, podejrzeć, i kliknąć ponownie moduł. MonteChristof DMC 00:14, 5 sty 2007 (CET)Odpowiedz

C

edytuj

Może zacznę od tego, że bardzo mi miło, że wykazujesz zainteresowanie tym podręcznikiem oraz aktywnie współpracujesz przy jego ulepszaniu. Jednak patrząc na Twoje dotychczasowe działanie chciałbym zwrócić Ci uwagę, że nie wszystkie zmiany są prawdziwe. Przykładem może być mój revert rozdziału o tablicach, gdzie niestety popełniłeś błąd merytoryczny. Mój gcc z opcją -std=c99 niestety nie skompilował kodu. Dlatego proszę Cię, abyś dyskutował z innymi autorami tego podręcznika ewentualne zmiany. W ten sposób będziemy mogli lepiej współpracować nad tym podręcznikiem. Przy okazji dziękuję za wyłapanie poważnych błędów ;-). --Kj 21:09, 6 sty 2007 (CET)Odpowiedz

Ej no sorry... mój GCC ;) Skompilował bez problemów:

[mina86@erwin ~/code]$ gcc --version
gcc (GCC) 3.4.6
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[mina86@erwin ~/code]$ cat const_tab.c
int main(void) {
  int foo = 10;
  int tab[foo];
  tab[0] = 0;
  return tab[0];
}
[mina86@erwin ~/code]$ gcc -std=c99 -pedantic -Wall -Wextra const_tab.c
[mina86@erwin ~/code]$

Tak samo się zachował gcc na moim serwerze uczelnianym:

mion<mnazarew>(258)~$ gcc --version
gcc (GCC) 3.4.3 (csl-sol210-3_4-branch+sol_rpath)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

mion<mnazarew>(259)~$ gcc -std=c99 -pedantic -Wall -Wextra const_tab.c

i to obie wersje:

mion<mnazarew>(262)~$ gcc --version
gcc (GCC) 4.0.2
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

mion<mnazarew>(263)~$ gcc -std=c99 -pedantic -Wall -Wextra const_tab.c
mion<mnazarew>(264)~$ 

no i rzecz jasna jeszcze kompilator Suna (aczkolwiek nie jestem pewny jak to cudo ustawić w tryb pełnej zgodności):

mion<mnazarew>(270)~$ cc -V
cc: Sun C 5.8 2005/10/13
usage: cc [ options] files.  Use 'cc -flags' for details
mion<mnazarew>(271)~$ cc -xc99 const_tab.c  
mion<mnazarew>(272)~$ 

Zresztą - co tam kompilatory. Wkleje sobie fragment finalnego drafta standardu C99:

6.7.5.2  Array declarators
[#1] The [ and ] may delimit an expression or *.  If [ and ]
delimit an  expression  (which  specifies  the  size  of  an
array), it shall have an integer type.  If the expression is
a constant expression then it shall  have  a  value  greater
than  zero.   The element type shall not be an incomplete or
function type.

[#2] Only ordinary identifiers (as defined  in  6.2.3)  with
both  block scope or function prototype scope and no linkage
shall have a variably modified type.  If  an  identifier  is
declared  to  be  an object with static storage duration, it
shall not have a variable length array type.
[#7] EXAMPLE 3 The following  declarations  demonstrate  the
compatibility rules for variably modified types.

        extern int n;
        extern int m;
        void fcompat(void)
        {
                int a[n][6][m];
                int (*p)[4][n+1];
                int c[n][n][6][m];
                int (*r)[n][n][n+1];
                p = a; // Error - not compatible because 4 != 6.
                r = c; // Compatible, but defined behavior
                       // only if n == 6 and m == n+1.
        }
Miałeś rację. Mój błąd polegał na tym, że przy deklaracji wypełniałem od razu strukturę danymi:
int a = 3;
int tab[a] = {1,2,3};
Dlatego też gcc się rzucał... --Kj 13:31, 7 sty 2007 (CET)Odpowiedz

Aha, jeszcze jedno - takie tablice w GCC są nie do końca zaimplementowane: [1] ;) --Kj 13:55, 7 sty 2007 (CET)Odpowiedz

Wiem :) --Mina86 14:00, 7 sty 2007 (CET)Odpowiedz

Jedna mała prośba - nie usuwaj "stopki" (nawigacja, interwiki itp.) stron z podręcznika o C. --Kj 17:37, 20 sty 2007 (CET)Odpowiedz

Wikibooks

edytuj

Tak przy okazji, mógłbyś zdradzić, jak trafiłeś na Wikibooks? Jeśli masz czas to też: co ci się w Wikibooks jako projekcie podoba a co nie? --Derbeth talk 18:35, 7 sty 2007 (CET)Odpowiedz

Na #forum.slackware.pl niejaki Grucha zaczał się dopytywać o tablice wielowymiarowe w C. Cośtam mu z niejakim dozzim podaliśmy i tak jakoś wyszło, że podał linka do wikibooks (konkretnie do opisu funkcji realoc, gdzie podany był sposób alokowania pamięci postaci float *tablica = (float*)malloc(costam * sizeof(float));, na który stałem się uczulony po tym jak zacząłem czytać comp.lang.c, a ponieważ idea OS nie jest mi obca postanowiłem poprawić ten karygodny ;) błąd (wówczas jeszcze nie miałem konta). A potem już tak jakoś postanowiłem, że przejrzę również pozostałe strony. ;)

Oczywiście o samym istnieniu Wikibooks wiedziałem już od dawna, ale jakoś nigdy nie miałem okazji tutaj zajrzeć. Zresztą, pewnie gdybym sam czegoś szukał to na polską wersję i tak bym nie trafił po Wikipedię zazwyczaj czytam po angielsku.

Co mi się podoba/niepodoba? Trudno powiedzieć - w sumie nie mam zdania na ten temat. ;) --Mina86

Odpowiedzi

edytuj

W projektach Wiki przyjeło się, że odpowiada się na stronie dyskusji osoby pytającej wtedy pojawi jej się taki żółty pasek jaki Ci się przed chwilą pojawił. Pozdrawiam Akira ? 19:59, 13 sty 2007 (CET)Odpowiedz

Draft C99

edytuj

Czy wprowadzasz do podręcznika rzeczy, które są w propozycji standardu?

Według mnie w C powinny być jasno oznaczone i oddzielone od reszty rzeczy, które są niezgodne ze standardem ANSI C. Zwłaszcza takie "patologie" jak komentarze jednolinijkowe, zwykłe stałe w rozmiarach tablic itp. rodem z C99 nie powinny pojawiać się w przykładach kodu, tak, aby te przykłady dały się kompilować na jak największej liczbie platform. --Derbeth talk 14:45, 21 sty 2007 (CET)Odpowiedz

libc

edytuj

Gdybyś jeszcze mógł podlinkować hasła, które napisałeś, bo wiele z nich "wisi w powietrzu". --Derbeth talk 21:23, 13 lut 2007 (CET)Odpowiedz