Std::function<__callback void (void)> vs std::function<void (void)>?

  1. std::function<__callback void (void)>
  2. std::function<void (void)> Расскажите, пожалуйста, о разнице между этими двумя.

Похоже, __callback — это ключевое слово, предоставленное WDK. Я думаю, что он отличается от протокола вызова функций, который я знал.

Используете ли вы его также для использования функций в обычных приложениях пользовательского уровня?

Это своего рода удобное ключевое слово, которое отдельно определяет асинхронные функции?

В чем разница между цифрами 1 и 2 выше и когда следует использовать цифру 1?

Последняя входит в стандартную библиотеку и должна использоваться при написании программы пользовательского уровня.

user12002570 29.07.2024 10:25

Это неважно. std::function работает таким образом, что добавление этого __callback может принести только вред. Параметр Template используется для удобного создания внутренних шаблонов. Соглашение о вызовах не влияет на этот шаблон.

Marek R 29.07.2024 10:28

Также укажите источник. Просто спрашивать о случайных идентификаторах, которые могут или не могут быть применимы от одной реализации к другой, неясно. Также не беспокойтесь о деталях реализации. Используйте вещи (по большей части), предоставляемые стандартной библиотекой.

user12002570 29.07.2024 10:28

@ user12002570 Я не думаю, что дубликаты отвечают на вопрос ОП. ОП упоминает WDK и что именно там используется __callback. Из Расширенные аннотации: «__callback — Функцию можно использовать как указатель на функцию.». Это мало что говорит, но, по-видимому, что-то значит для компилятора.

Ted Lyngmo 29.07.2024 10:33

Я согласен с Тедом Люнгмо и снова открыл этот вопрос.

HolyBlackCat 29.07.2024 10:35

Для передачи указателей функций через границу режима пользователя/ядра? Я просто предполагаю.

john 29.07.2024 11:05
__callback или __Callback ?
463035818_is_not_an_ai 29.07.2024 11:29

@463035818_is_not_an_ai Хороший улов. Это __callback. :-)

Ted Lyngmo 29.07.2024 11:32
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
8
94
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это просто аннотация Microsoft SAL (язык аннотаций исходного кода).

Из Расширенные аннотации: «__callback — Функцию можно использовать как указатель на функцию». Он определяется как:

#define __callback __allowed(on_function)

Он ничего не делает с сигнатурой функции, но является разрешенной аннотацией для функций, поэтому, если вы уже не аннотируете свой собственный код по SAL, не используйте __callback.

Другие вопросы по теме

Как что-то делать, когда консоль закрыта пользователем (С++)?
Невозможно зарегистрировать несколько выходных данных с помощью WriteConsoleA в программе сборки Windows 10 (64-разрядной версии)
Не удалось скомпилировать точный листинг сборки, созданный компилятором
Окно не получает фокус даже при перемещении вверх
После перемещения файла в другое место и последующего создания файла с тем же именем в исходном месте время создания неверно
Java Graphics2D.drawImage() отображает размытое изображение только в Windows с масштабированием 125% и только в версиях Java после Java 8
Кто-нибудь знает, почему моя переменная (x) изменила свое значение с 3 на 0 (1 после x++) в этой программе? Я пытаюсь создать систему регистрации, но она перезаписывает
Как я могу установить текстовое значение в соответствии с позицией
Можно ли определить функцию C++, в которой один параметр передается через регистр EAX?
Получение имени пользователя Windows в формате «Имя Фамилия», когда пользователь является частью группы