История изменений
Исправление MOPKOBKA, (текущая версия) :
Не знаю как решается эта задача, но совместимые типы можно различать, нужно заменить _Generic на цепочку вложенных __builtin_choose_expr, различать типы можно с помощью аттрибутов: https://godbolt.org/z/hhTWfP1Ya
visibility не советую использовать, нужно подобрать аттрибут без эффектов.
Или это принципиально неразрешимая задача в языке C?
Если без расширений то да. Проверка типов по совместимости еще приводит к проблемам с enum, он просто работает как int.
Исправление MOPKOBKA, :
Не знаю как решается эта задача, но совместимые типы можно различать, нужно заменить _Generic на цепочку вложенных __builtin_choose_expr, различать типы можно с помощью аттрибутов: https://godbolt.org/z/hhTWfP1Ya
visibility не советую использовать, нужно подобрать аттрибут без эффектов.
Или это принципиально неразрешимая задача в языке C?
Если без расширений то да.
Исправление MOPKOBKA, :
Не знаю как решается эта задача, но совместимые типы можно различать, нужно заменить _Generic на цепочку вложенных __builtin_choose_expr, различать типы можно с помощью аттрибутов: https://godbolt.org/z/hhTWfP1Ya
visibility не советую использовать, нужно подобрать аттрибут без эффектов.
Исходная версия MOPKOBKA, :
Не знаю как решается эта задача, но совместимые типы можно различать, нужно заменить _Generic на цепочку вложенных __builtin_choose_expr, различать типы можно с помощью аттрибутов: https://godbolt.org/z/hhTWfP1Ya