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

Usunięta treść Dodana treść
nie wszyscy chcą jawnie wywoływać funkcję
→‎Konwencje pisania makr: nazwy makr są case-sensitive
Linia 47:
#*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>kwadratKWADRAT(a++)</code> ponieważ zostanie to rozwinięte jako <code>((a++) * (a++))</code>, co jest niezgodne ze specyfikacją języka i zachowanie takiego wyrażenia jest niezdefiniowane (dwukrotna inkrementacja w tym samym 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.