a u innych...
Jakub Piotr Cłapa
loc w toya.net.pl
Wto, 20 Gru 2005, 21:55:07 CET
Jakub Bogusz napisał(a):
> On Mon, Dec 19, 2005 at 01:38:02PM +0100, pluto w agmk.net wrote:
> [...]
>> np. na amd64 przez implici decl. strcpy() -> kompilator traktuje wynik
>> jako int zamiast wskaznika i segv gotowy.
>
> Takie rzeczy na alphie często działają "przypadkiem" - wszystkie wartości
> zwracane przez funkcje i przekazywane jako parametry w rejestrach muszą
> być sign-extended i na tym kompilator polega (nie czyści już starszych
> połówek wartości zwracanych jako int przed dalszym przekazaniem jako
> wartość 64-bitowa).
> Za to przy mieszaniu typów dzieją się różne rzeczy (jak autor założył,
> że sizeof(long) albo sizeof(size_t) ==sizeof(int)).
>
> Inny typ "wykroczeń" to niewłaściwy dostęp do va_list (zakładanie, że
> jest to tablica lub wskaźnik do tablicy - bardzo nieprzenośne, na ok.
> połowie architektur się wykłada).
A jest gdzieś jakiś przewodnik po tym, jak pisać kod w C, który będzie
przenośny? Coś, gdzie takie problemy byłyby wytłuszczone i pozwoliłyby
na uniknięcie takich błędów?
Niby temat jest znany i obadany, ale jakoś nie widziałem nigdzie
jakiegoś ładnego opisu tych problemów (najlepiej z przykładami kodu,
który się sypie i jak go poprawić). Może to dobry temat na czyjąś
magisterkę? ;]
--
z wyrazami szacunku,
Jakub Piotr Cłapa
Więcej informacji o liście dyskusyjnej pld-discuss-pl