Предупреждение при сборке программы, использующей boost :: asio - PullRequest
0 голосов
/ 14 марта 2012

Я получаю то же предупреждение, как описано в этом вопросе . Ответ работает, но, поскольку моя программа должна работать в XP, Vista и 7, я беспокоюсь, что если я укажу версию Windows для XP, у меня будут проблемы в других системах.

Даже если бы я определил конкретную версию, мне пришлось бы устанавливать ее во всех моих проектах на C ++, что создает трудности. Я думал о создании отдельных конфигураций сборки для XP, Vista и 7, каждая с правильным определением препроцессора во всех проектах C ++. Есть ли более элегантное решение?

1 Ответ

1 голос
/ 14 марта 2012

API-интерфейсы обратно совместимы, поэтому вы должны установить для низшую версию , которую вы хотите поддерживать. В вашем случае для XP и выше установите его на 0x0501. Если вы хотите также поддерживать Win2k, установите для него значение 0x0500.

Microsoft прилагает большие усилия для того, чтобы новые операционные системы не нарушали API, и даже если бы они это сделали, у вас все еще есть дополнительный уровень абстракции с boost.asio.

Ваша идея с различными конфигурациями сборки неплоха, но она окупится, только если вы планируете использовать более новые функции, которые доступны не во всех версиях, которые вы хотите поддерживать. Например, Boost.asio использует только подмножество Winsock из Win32 API, поэтому здесь вы абсолютно ничего не получите.

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