но даже на нативщине я преимущественно пишу на Qt, лишь изредка дергая данные API напрямую, заботливо обрамляя в платформозависимые макросы типа #ifdef Q_OS_*
а ты пиши на жабе, пехтоне и прочих - и не будет тебе привыкания - выбери себе универсальный кроссплатформенный базис
не верю что у тебя настолько серьезные задачи чтобы надо было целиком и полностью писать всё на родных API, типа когда библиотеку пишут и т.п.
После продуманного и выдержанного в едином стиле WinAPI, POSIX будет восприниматься как лоскутное одеяло, как свалка старых проржавевших велисипедов из которых ничего годного собрать невозможно, чем он в принципе и является. Хвалить его могут только всякие школьники, пользующиеся похапэ и ни того ни другого не видевшие в своей жизни.
WinAPI дает больше возможностей, часть из которых в POSIX придется собирать из доступного по кирпичикам, а про другую часть тебе проФФесура ЛОРа расскажет, что это не нужно.
Вообще, если есть возможность - старайся писать кроссплатформенно, т.е. по возможности не опускаясь на низкий уровень (POSIX/WinAPI).
«и чтобы в нее обязательно можно было передать не менее 15-ти обязательных параметров, по ссылкам, некоторые из них она поменяет. и половина параметров может быть 0, вторая Null. и еще чтоб ее два раза вызывать — первый чтобы определить необходимые размеры буферов. и чтобы она делала все-все и kitchen sink в придачу! а, и еще обязательно чтобы этой функции было три-четыре версии, разных поколений, и чтобы w64 обязательно что-то делала не так как w32»
Ты забыл: «и если эта функция вернёт FALSE (не путать с false), то обязательно нужно будет сразу же вызвать GetLastError(), чтобы узнать - это по приколу так, или действительно ошибка»