У меня есть функция, которая определяется следующим образом:Назначение значения указателю нестатической функции, приводящему к сбою - ПОЧЕМУ?
typedef void (*logprintf_t)(const char* format, ...);
logprintf_t logprintf
void my_function() {
logprintf = cast(logprintf_t)0x12345;
}
и это вызывает приложение для выхода. Однако, если я делаю logprintf быть статическим (я видел этот трюк где-то), т.е .:
void my_function() {
static logprint_t logprintf = cast(logprintf_t)0x12345;
}
он не откажет.
Является ли такое правило правилом или ошибкой? Почему dmd не предупреждает об этом?
1) Да, я просто забыл, когда писал вопрос, фиксированная 2) Я пытался использовать как ЬурейеЕ и псевдоним, он дает те же результаты для меня 3) же, как 2 – szx
Тогда я не могу воспроизвести это вообще. Можете ли вы предоставить более подробную информацию о том, какое сообщение об ошибке вы получаете, когда оно падает? – dsimcha
ОК, сейчас очень странно - я не могу воспроизвести его в другом приложении, но в моем случае это так! Я попытался прокомментировать строку с частью назначения, и она работала, поэтому я подумал, что проблема там ... BTW Я делаю DLL (плагин), который загружается внешним (закрытым исходным) приложением, и он не " t производит какие-либо сообщения при сбое. Он работал точно так же в C++, но теперь я перехожу к D и имею эту тупую проблему. Спасибо за ваш ответ. – szx