Dyskusja wikipedysty:Mina86

Z Wikibooks, biblioteki wolnych podręczników.
Przejdź do nawigacji Przejdź do wyszukiwania

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.

Mamy nadzieję, że zostaniesz z nami na dłużej!MonteChristof DMC 00:14, 5 sty 2007 (CET)

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)

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.
        }
Mina86
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)

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

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

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

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)

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)

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)

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)