C/Powszechne praktyki: Różnice pomiędzy wersjami
Usunięta treść Dodana treść
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>, czyli zmienna <code>a</code> będzie miała wartość o jeden większą po prawej stronie operatora mnożenia, a zatem wartośc wyrażenia będzie inna niż kwadrat zmiennej <code>a</code> przed inkrementacją.
# 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.
|