![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Litkevich Yuriy |
![]() ![]()
Сообщение
#1
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Столкнулся с таким кодом:
Первая (непонятная) строка: думаю, мне понятна - объявление шаблонной функции, у которой параметр шаблона имеет тип uint32_t, имя шаблонного параметра не указано, т.к. не используется (да и комментарий в коде говорит об этом). Вторая (непонятная) и последняя строки: тут совсем непонятно, т.к. вижу вначале ключевое слово template, а в конце фигурные скобки, то вроде это определение шаблонной функции. Однако после имени функции идут фигурные скобки с неким содержимым, так обычно вызывают шаблонные функции. Дак что же это в 2-ух последних строках? напоминает перегруженные функции Сообщение отредактировал Litkevich Yuriy - 9.12.2020, 11:50 |
|
|
Алексей1153 |
![]()
Сообщение
#2
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Litkevich Yuriy, это специализация шаблона функции
первая строка - как бы начало, от которого нужно будет отталкиваться компилятору при подборе наиболее подходящей специализации. Причём тело функции отсутствует, это лишь объявление (если перейти к аналогии простых функций) вторая и третья строки - специализация функции для параметра типа uint32_t, указанного при инстанцировании шаблона, равного GPIOA_BASE и GPIOB_BASE соответственно
с моей точки зрения шаблоны тут вообще не нужны, можно обойтись енумклассом
или даже так
Сообщение отредактировал Алексей1153 - 10.12.2020, 8:13 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#3
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Спасибо, Алексей!
(кнопки "Спасибо" почему-то нет) |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 16.2.2025, 15:24 |