Есть проект в MSVC++. Есть файл, использующий ряд популярных WIN API вызовов - CreateProcess, CreateFile, и им подобные. Всё собирается, всё замечательно.
В какой-то момент решаем использовать функционал из прекрасной библиотеки POCO. Включаем заголовочный файл для требуемого модуля - например, "Poco/Logger.h", и наш проект перестаёт собираться, жалуясь на то, что его любимые WIN API вызовы вдруг пропали.
В процессе раскопок выяснилось, что в POCO есть файл, unwindows.h, который включается его собственными заголовками. Данный файл просто и со вкусом, через #undef, убирает ряд annoying macros (по его скромному мнению) - да-да, те самые CreateFile, и прочие. К чести сказать, удаляет не всегда, а только в том случае, если не выставлен #define с именем POCO_NO_UNWINDOWS - другими словами, как мне кажется, в 99% случаев. Вы ведь сразу выставили данный #define для каждого проекта, в котором используете WIN API вызовы, как только стали использовать POCO? Вот и я почему-то "поленился".
Причина, возможно, в том, что весь функционал, предоставленный данными API вызовами, существует в POCO, и таким способом разработчику "ненавязчиво намекают" на переход на средства библиотеки. Кроме как "тонким издевательством" такой "пиар" назвать не могу.
В какой-то момент решаем использовать функционал из прекрасной библиотеки POCO. Включаем заголовочный файл для требуемого модуля - например, "Poco/Logger.h", и наш проект перестаёт собираться, жалуясь на то, что его любимые WIN API вызовы вдруг пропали.
В процессе раскопок выяснилось, что в POCO есть файл, unwindows.h, который включается его собственными заголовками. Данный файл просто и со вкусом, через #undef, убирает ряд annoying macros (по его скромному мнению) - да-да, те самые CreateFile, и прочие. К чести сказать, удаляет не всегда, а только в том случае, если не выставлен #define с именем POCO_NO_UNWINDOWS - другими словами, как мне кажется, в 99% случаев. Вы ведь сразу выставили данный #define для каждого проекта, в котором используете WIN API вызовы, как только стали использовать POCO? Вот и я почему-то "поленился".
Причина, возможно, в том, что весь функционал, предоставленный данными API вызовами, существует в POCO, и таким способом разработчику "ненавязчиво намекают" на переход на средства библиотеки. Кроме как "тонким издевательством" такой "пиар" назвать не могу.
Комментариев нет:
Отправить комментарий