std::function<__callback void (void)>
std::function<void (void)>
Расскажите, пожалуйста, о разнице между этими двумя.Похоже, __callback
— это ключевое слово, предоставленное WDK.
Я думаю, что он отличается от протокола вызова функций, который я знал.
Используете ли вы его также для использования функций в обычных приложениях пользовательского уровня?
Это своего рода удобное ключевое слово, которое отдельно определяет асинхронные функции?
В чем разница между цифрами 1 и 2 выше и когда следует использовать цифру 1?
Это неважно. std::function
работает таким образом, что добавление этого __callback
может принести только вред. Параметр Template используется для удобного создания внутренних шаблонов. Соглашение о вызовах не влияет на этот шаблон.
Также укажите источник. Просто спрашивать о случайных идентификаторах, которые могут или не могут быть применимы от одной реализации к другой, неясно. Также не беспокойтесь о деталях реализации. Используйте вещи (по большей части), предоставляемые стандартной библиотекой.
@ user12002570 Я не думаю, что дубликаты отвечают на вопрос ОП. ОП упоминает WDK и что именно там используется __callback
. Из Расширенные аннотации: «__callback
— Функцию можно использовать как указатель на функцию.». Это мало что говорит, но, по-видимому, что-то значит для компилятора.
Я согласен с Тедом Люнгмо и снова открыл этот вопрос.
Для передачи указателей функций через границу режима пользователя/ядра? Я просто предполагаю.
__callback
или __Callback
?
@463035818_is_not_an_ai Хороший улов. Это __callback
. :-)
Это просто аннотация Microsoft SAL (язык аннотаций исходного кода).
Из Расширенные аннотации: «__callback
— Функцию можно использовать как указатель на функцию». Он определяется как:
#define __callback __allowed(on_function)
Он ничего не делает с сигнатурой функции, но является разрешенной аннотацией для функций, поэтому, если вы уже не аннотируете свой собственный код по SAL, не используйте __callback
.
Последняя входит в стандартную библиотеку и должна использоваться при написании программы пользовательского уровня.