Короче у меня от этой кроссплатформенности голова кругом, SDL2 спасает только разве что от совсем базовых, но важных конечно вещей, стандартная библиотека С и то не всегда всё гладко, старание придерживаться POSIX конечно тоже здорово, но ПОЗИКС тоже как бэ не один, а во всех разбираться крыша поедет. Проблема в том что вот ты начинаешь писать новую функцию вот тебе надо создать каталог и перейти в него, нагенерить файлов обойти их попутно обходя рекрсивно другой каталог и потому удалить всё это брахло и тут на каждом шагу остановки, а будет ли это работать тут, а там, а вот тут, и каждый раз не веря гуглу перекомпилять под разное дабы проверить что всё хорошо ибо всегда что-то можно упустить и не заметить. Ну перекрываю поток воды, смысл думаю понятен про что я.
И теперь вопрос, есть ли в природе такой зверёк которому можно скормить исходники проекта и он прочекает совместимость по стандартам, платформам и всё вот это и выдаст например что-то типа
~$croscheck --all-targets -R ~/my_project
~$############### STD CHECK ################
~$[POSIX - ISO/IEC/IEEE 9945:2009] - 100% совместимости : используйте -v для подробностей
~$[POSIX - ISO/IEC/IEEE 9945:2009/Cor 2:2017] - 2 ошибки совместимости : используйте -v для подробностей
~$[и так далее всякие ISO C 99/11 куча всего]
~$[blablabla] 1% совместимости 65898 ошибок : используйте -v для подробностей
~$############## ARCH CHECK ###############
~$[Little endian] - 3458 ошибок нет гарантии работы !
~$[Big endian] - OK!
~$[Word 8] - Работа невозможна!
~$[Word 16] - Работа невозможна!
~$[Word 32] - 640 ошибок типа
~$[Word 64] - OK!
~$[и куча другой фигни разноцветной]
~$############# SUMMARY ###################
~$[OK] 100% совместимая платформа -> x86_64 Linux(from 2.6 to 5.2) В рамках POSIX 9945:2009 gcc(from 6.3 to 9.2)
~$[OK] 100% совместимая платформа -> x86_64 MacOSX(from x.x to x.x) В рамках POSIX 9945:2009 gcc(from 6.3 to 9.2)
~$[ER] Сломана совместимость с Ms Windows / NDK Android / blablabla : используйте -v для подробностей
Ну и с флагом -v выводились бы отсутствующие функции, константы, макросы, типы там заголовки и так далее Ну и если я например хочу 32bit + 64bit + Android + Linux + Windows, а остальное мне не важно то чекаю типа
croscheck -R target_arch=i686,x86_64 target_platform=Linux,Windows,Android ~/my_project
и всё
Вот такую штуку я хочу (✿◠‿◠) есть такая (づ。◕‿‿◕。)づ ?
UDP: И что бы она ещё альтернативу предлагала например
You use TARGET=Linux|gcc mkdir() -> TARGET=Windows you can fix compatibility and use ifdef witch UCRT API _mkdir
Ну или чёт типа того =)
UDP: Поправочка ненужнистам =)
К примеру под винду виндузятник написал оочень полезную утилиту которая конвертирует pdf в текст ооочень быстро и качественно , она под GPLv3 и красота, но только вот автор активно использует WIN API и треды виндузовые и ещё типы какие то странные, ну и как первый шаг просто чекаем что в коде несовместимо с Linux POSIX и просто пошагово вносим изменения пока полностью не портируем программку до 100% совместимости с новой платформой, а потом уже можно смержить код специфичные вещи выделив в ifdef или либы, как кому удобнее, я вот всё выношу в SDL_local.c к примеру