Рекомендуется ли обращаться к глобальной переменной с помощью макроса? - PullRequest
0 голосов
/ 25 февраля 2019

Я видел этот фрагмент кода в файле C:

Файл Abcd.h -

#define X (&y) 

Файл Abcd.c -

extern int y;

Этообщая практика использовать макрос для доступа к глобальным переменным адресам или полям глобальной структуры?

Желательно ли это делать?Если да, то почему?Если нет, то почему?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

Я видел макросы, используемые для упрощения сложных выражений или для упрощения доступа к членам глубоко вложенных структур, что-то вроде

#define GET_NAME(foo) (foo)->bar->blah->name

Я никогда не видел, чтобы кто-нибудь использовал макрос для просто Абстрагируйся от & операции над определенным глобальным объектом.Без большего контекста я не могу сказать, хорошая это или плохая идея.

0 голосов
/ 25 февраля 2019

Не думаю, что это так плохо ...

Некоторые реализации делают нечто подобное с errno:

extern int *__geterrno(void);

#define errno (*__geterrno())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...