Я хочу использовать магию малой злой магии для создания массива указателей на все функции в файле. К сожалению, я ограничен C99 и не очень популярным компилятором.Инициализация глобального массива указателей функций
У меня была идея, но я не уверен, если это безопасно:
void foo(void)
{
;
}
void bar(void)
{
;
}
typedef void (*FuncPointer)(void);
FuncPointer array[2] = {foo, bar};
Я попробовал его, и он компилируется и даже работал, но в C, что на самом деле не Meen, что такого рода вещи безопасным или переносным.
Есть ли какие-либо гарантии относительно инициализации глобальных массивов указателей?
Что означает «безопасный»? Означает ли это что-нибудь? Не хотите ли это определить? –
Уверены, что есть гарантии: если вы их инициализируете, они инициализируются. Каковы ваши проблемы с переносимостью? И я уверен, что невозможно собрать макрос всех имен функций в файле. – mafso
@KerrekSB от «safe» Я имел в виду, что «указатели будут действительны» – Amomum