c + + - Advarsel ved opbygning af program, der bruger boost :: asio

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg får den samme advarsel som beskrevet i dette spørgsmål.
Svaret fungerer, men da mit program skal kunne køre i XP, Vista og 7, er jeg bekymret for, at hvis jeg definerer Windows-versionen for at være XP, har jeg problemer i de andre systemer.


Selv om jeg definerede en bestemt version, skal jeg indstille det i alle mine C ++-projekter, hvilket er en besvær. Jeg tænkte på at oprette separate byggekonfigurationer til XP, Vista og 7, hver med den korrekte præprocessor definition i alle C ++ projekter. Er der en mere elegant løsning?

Bedste reference


API'erne er bagudkompatible, så du skal indstille definitionen til laveste version , du vil understøtte. I dit tilfælde skal du indstille den til 0x0501 for XP og op. Skulle du også gerne støtte Win2k, skal du sætte den på 0x0500.


Microsoft lægger stor vægt på at sikre, at nyere operativsystemer ikke bryder API'er, og selvom de havde du stadig et ekstra abstraktionslag med boost.asio.


Din ide med de forskellige byggekonfigurationer er ikke dårlig, men det vil kun betale sig, hvis du specifikt planlægger at bruge nyere funktioner, der ikke er tilgængelige på alle versioner, du vil understøtte. Boost.asio bruger for eksempel kun en delmængde af Winsock fra Win32 API, så du vil ikke få absolut noget her. [4]