C/Powszechne praktyki: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
m poprawa nawigacji
→‎Konwencje pisania makr: poprawka niezgodnych z prawdą, zależnych od implementacji detali
Linia 80:
#*Dobrze: <code>#define FREE(p) do { free(p); p = NULL; } while(0)</code>
# Unikaj używania argumentów makra więcej niż raz wewnątrz makra. Może to spowodować kłopoty, gdy argument makra ma efekty uboczne (np. zawiera operator inkrementacji).
#*'''Przykład:''' <code>#define kwadrat(x) ((x)*(x))</code> nie powinno być wywoływane z operatorem inkrementacji <code>kwadrat(a++)</code> ponieważ zostanie to rozwinięte jako <code>((a++) * (a++))</code>, czylico zmiennajest <code>a</code>niezgodne będzieze miałaspecyfikacją wartośćjęzyka oi jedenzachowanie większą po prawej stronie operatora mnożenia, a zatem wartośctakiego wyrażenia będziejest innaniezdefiniowane niż(dwukrotna kwadratinkrementacja zmiennejw <code>a</code>tym przedsamym inkrementacjąwyrażeniu).
# Jeśli makro może być w przyszłości zastąpione przez funkcję, rozważ użycie w nazwie małych liter, jak w funkcji.