Условное изменение / переопределение слабосвязанного символа

У меня есть следующее слабо связанное объявление:

extern __attribute__((visibility ("default"))) Type* const symbolName __attribute__((weak_import));

Проблема в том, что символ может или не может быть определен, в зависимости от операционной системы.

Итак, когда я использую это func(symbolName);, Я получаю сигнал 11 сбой, потому что я пытаюсь разыменования нуль. Я мог бы спросить if(&symbolName != NULL) { func(symbolName); }, но это потребовало бы, чтобы все, использующие этот символ, не забывали задавать этот вопрос, что не является оптимальным.

Я ищу волшебную магию, чтобы условно изменить или переопределить этот символ, только если он недоступен, чтобы иметь какое-то значение по умолчанию, которое мое func будет работать с.

Я понимаю, что это уродливое решение и не рекомендуется. На данный момент, я просто хочу знать, есть ли способ сделать это, независимо от того, насколько уродливым или низким уровнем.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]