The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

A.8 Препроцессор

A.8 Препроцессор

Предыдущая  Содержание  Следующая V*D*V

ANSI-C больше не разворачивает #define рекурсивно; поэтому вызовы функций могут быть скрыты или упрощены макросами с теми же именами:

 

#define malloc(type) (type *) malloc(sizeof(type))

 

int * p = malloc(int);

 

Если определён макрос с параметрами, ANSI-C распознает такой вызов только если имя макроса появляется перед левой скобкой; поэтому распознавание макроса может быть подавлено в заголовке функции заключением имени такой функции дополнительным набором круглых скобок:

 

#include <stdio.h>                определяет putchar(ch) как макрос

 

int (putchar) (int ch) { ... }    имя не заменяется

 

По той же причине определение параметрического макроса больше не вступает в противоречие с переменной того же имени:

 

#define x(p) (((const struct Object *)(p)) -> x)

 

int x = 10;                       имя не заменяется

 

Предыдущая  Содержание  Следующая