Мне интересно о практическом использовании #undef в C. Я работаю через K & R, и я до препроцессора. Большинство из них было материалом я (более или менее) понятым, но что-то на странице 90 (второе издание) торчали у меня:
Имена могут быть undefined с
#undef
, обычно для обеспечения того, чтобы действительно функция, а не макрос:
#undef getchar
int getchar(void) { ... }
Это обычная практика защиты от кого-то #define
- использование макроса с тем же именем, что и ваша функция? Или это действительно больше образец, который не произошел бы на самом деле? (Э.Г., никто в своем праве, неправильный или безумный разум не должен переписываться getchar()
, поэтому он не должен появляться.) С вашими собственными именами функций вы чувствуете необходимость сделать это? Это изменится, если вы разрабатываете библиотеку для других пользователей?