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

Usunięta treść Dodana treść
→‎Konwencje pisania makr: nazwy makr są case-sensitive
Anulowanie wersji nr 171448 utworzonej przez 178.42.163.56 (dyskusja)
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.