39045

39045



172


ROZDZIAŁ 24. PRZENOŚNOŚĆ PROGRAMÓW

mie korzystamy z rozszerzenia naszego kompilatora. Rozważmy odwoływanie się do wartości wskazywanej przez wskaźnik o wartości NULL. Ponieważ według standardu operacja taka ma niezdefiniowany skutek to w szczególności może wywołać jakąś z góry określoną funkcję kompilator może coś takiego zrealizować sprawdzając wartość wskaźnika przed każdą dereft*-rencją. w ten sposób niezdefiniowane zachowanie dla konkretnego kompilatora stanie się jak naj liardziej zdefi n iowane.

Sytuacją wziętą z życia są operatory przesunięć bitowych, gdy działają na liczbach ze znakiem. Konkretnie przesuwanie w lewo liczb jest dla wielu przypadków niezdefiniowane. Bardzo często jednak, w dokumentacji kompilatora działanie przesunięć bitowych jest dokładnie opisane. Jest to o tyle interesujący fakt. iż wielu programistów nie zdaje sobie z niego sprawy i nieświadomie korzysta z rozszerzeń kompilatora.

Istnieje jeszcze trzecia klasa zachowań. Zachowania nieokreślone (ang. unsper.ifieA beha-tnour). Są to sytuacje, gdy standard określa kilka możliwych sposobów w jaki dane wyrażenie może działać i pozostawia kompilatorowi decyzję co z tym dalej zrobić. Coś takiego nie musi być nigdzie opisane w dokumentacji i znowu poleganie na konkretnym zachowaniu jest błędem. Klasycznym przykładem może być kolejność obliczania argumentów wywołania funkcji.

Rozmiar zmiennych

Rozmiar poszczególnych typów danych (np. char. int czy long) jest różna na różnych platformach. gdyż nie jest definiowany w sztywny sposób, jak np. “long int zawsze powinien mieć fil bity” (takie określenie wiązałoby się z wyżej opisanymi trudnościami), lecz w na zasadzie zależności typu "king powinien być nie krótszy niż int", "short nie powinien być dłuższy od int". Pierwsza standaryzacja języka C zakładała, że typ int będzie miał taki rozmiar, jak domyślna długość liczb całkowitych na danym komputerze, natomiast modyfikatory short oraz long zmieniały długość tego typu tylko wtedy, gdy dana maszyna obsługiwała typy o mniejszej lub większej długości1.

Z tego powodu, nigdy nie zakładaj, że dany typ będzie miał określony rozmiar. Jeżeli potrzebujesz typu o konkretnym rozmiarze (a dokładnej konkretnej liczbie bitów wartości) możesz skorzystać z pliku nagłówkowego stdint.h wprowadzonego do języka przez standard ISO C z 199!) roku. Definiuj©on typy intS.t. int lfi.t, int32.t. intfi-ł.t. uint&.t, uint lfi.t. uint32.t i uintfiJ.t (o ile w danej architekturze występują typy o konkretnej liczbie bitów).

Jednak możemy posiadać implementację, która nie p<*dada tego pliku nagłówkowego. W takiej sytuacji nie pozostaje nam nic innego jak tworzyć własny plik nagłówkowy, w którym za |K>mocą słówka typedef sami zdefiniujemy potrzebne nam typy. Np.:

typedef unsigned char    u8;

typedef signed char    s8;

typedef unsigned short ul6; typedef signed short sl6; typedef unsigned long    u32;

typedef signed long    s32;

typedef unsigned long long u64; typedef signed long long s64;

Aczkolwiek należy pamiętać, że taki plik Ijędzie trzeba pisać od nowa dla każdej architektury na jakiej chcemy kompilować nasz program.

‘Dokładniejszy opis rozmiarów dostępny jest w rozdziale Składnia.



Wyszukiwarka

Podobne podstrony:
174ROZDZIAŁ 24. PRZENOŚNOŚĆ PROGRAMÓW int mainO { • if BYTE.ORDER —
176IWZDZ1AL 24. PRZENOŚNOŚĆ PROGRAMÓW a w kodzie programu zamiast słówka inline stosować .Jnline___C
Biologia s 24 Powtórz rozdział!IŁ APARAT RUCHU D Opisz korzyści wynikające z budowy wymienionych ele
2, Programy studiów 1. stopnia W tym rozdziale przedstawione są programy studiów stacjonarnych 1. st
skanuj0573 172 Rozdział 6 wewnętrznymi problemami6. Odwrotna sytuacja jednak występuje w przedsiębio
skanuj0573 172 Rozdział 6 wewnętrznymi problemami6. Odwrotna sytuacja jednak występuje w przedsiębio
Spis treści 11 Rozdział 24. Edukacja jako pomoc w rozwoju w ujęciu andragogiki i gerontologii (Olga
Rozdział 11.2. Dobór programów CAD do prac projektowych Na rynku współczesnych programów CAD 3D istn
Rozdział 1 Rysunek 1.4 Interface programu 3D (Autodesk lnventor 2010) Systemy 3D Są to zestawy progr
Rozdział 11.1. Zastosowanie programów CAD w projektowaniu Współczesny proces projektowo produkcyjny,
rozdział 2 (24) wyznaczony przez poziom agregatowego popytu na towary. Warunek równowagi możemy okre
socjologia 5 172 Rozdział 6. Socjologia ciała - zdrowie, choroba i starzenie się Tabela 6.2. Problem
Scan 120303 0010 172 Rozdział VII. Samorząd terytorialny inaczej. Organizację i zasady funkcjonowani
P3111175 102 Rozdział III się do fizyki, lecz rozszerza się na politykę (dzięltj Hobbesowi), etykę (
PwTiR087 172 Rozdział 7 •    90 litrów wina i napojów fermentowanych (w tym 60 litrów
rozdział 1 (24) 30 Podstawy marketingu dystrybucji idei, dóbr i usług w celu doprowadzenia do wymian
page0182 172 Elam 4, 24, 32, 33, 35, 36, 38, 47, 48, 61, 64, 67, 87, 88, 92, 120, 151 Elam i ci

więcej podobnych podstron