LINUX.ORG.RU

История изменений

Исправление 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