У меня есть следующее слабо связанное объявление:
extern __attribute__((visibility ("default"))) Type* const symbolName __attribute__((weak_import));
Проблема в том, что символ может или не может быть определен, в зависимости от операционной системы.
Итак, когда я использую это func(symbolName);
, Я получаю сигнал 11 сбой, потому что я пытаюсь разыменования нуль. Я мог бы спросить if(&symbolName != NULL) { func(symbolName); }
, но это потребовало бы, чтобы все, использующие этот символ, не забывали задавать этот вопрос, что не является оптимальным.
Я ищу волшебную магию, чтобы условно изменить или переопределить этот символ, только если он недоступен, чтобы иметь какое-то значение по умолчанию, которое мое func
будет работать с.
Я понимаю, что это уродливое решение и не рекомендуется. На данный момент, я просто хочу знать, есть ли способ сделать это, независимо от того, насколько уродливым или низким уровнем.
Задача ещё не решена.
Других решений пока нет …