我有以下弱联系声明:
extern __attribute__((visibility ("default"))) Type* const symbolName __attribute__((weak_import));
问题是,符号可能定义也可能不定义,具体取决于操作系统。
所以,当我使用它func(symbolName);
时,我得到一个信号11崩溃,因为我正在尝试取消引用null。我可以问if(&symbolName != NULL) { func(symbolName); }
,但这需要每个使用此符号的人都记得问这个问题,这不是最佳的。
我正在寻找一些巫术魔法来有条件地修改或重新声明此符号,只有在不可用的情况下,才能拥有我的func
可以使用的默认值。
我知道这是一个丑陋的解决方案,不建议使用。在这一点上,我只是想知道是否有办法做到这一点,无论多么丑陋或低级别。