Могу ли я в любом случае вызвать сбой функции при вызове во время инициализации глобальной статической переменной? Функция использует другую глобальную статическую (из другого модуля) и поэтому небезопасна для вызова во время запуска.
У меня есть две причины для этого. Во-первых, если бы я мог как-то обнаружить этот сценарий, я мог бы напечатать полезное сообщение об отладке, вместо того, чтобы отследить его, если в противном случае произошла бы ошибка сегмента и дурацкого стека. Во-вторых, я могу предотвратить случайную работу. Иногда библиотеки и объектные файлы просто выстраиваются в правильном порядке, а порядок зависимостей в порядке, поэтому вы думаете, что код правильный, но это не так.
Примечание. Это не отдельная программа, а функция из библиотеки, поэтому пометка какой-либо глобальной переменной в качестве первого шага к основному может не быть работоспособным вариантом. Что еще хуже, в одном случае это на самом деле функция шаблона со ссылками на внешнюю статическую переменную.
Примечание. Из соображений эффективности я хочу избежать очевидного решения, заключающегося в простом переносе статики в вызов функции.
Обман GCC разрешен, так как достаточно было бы обнаружить его на одной из наших платформ.