crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> шаблоны, непонятные
Litkevich Yuriy
  опции профиля:
сообщение 9.12.2020, 11:48
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Столкнулся с таким кодом:
#define APBPERIPH_BASE        PERIPH_BASE
#define AHB2PERIPH_BASE       (PERIPH_BASE + 0x08000000)

#define GPIOA_BASE            (AHB2PERIPH_BASE + 0x00000000)
#define GPIOB_BASE            (AHB2PERIPH_BASE + 0x00000400)
//..


//    Непонятный код:

template<uint32_t> uint32_t getPeripheral();          ///< generic template - never used
template<> inline uint32_t getPeripheral<GPIOA_BASE>() { return RCC_AHBPeriph_GPIOA; }
template<> inline uint32_t getPeripheral<GPIOB_BASE>() { return RCC_AHBPeriph_GPIOB; }


Первая (непонятная) строка:
думаю, мне понятна - объявление шаблонной функции, у которой параметр шаблона имеет тип uint32_t, имя шаблонного параметра не указано, т.к. не используется (да и комментарий в коде говорит об этом).

Вторая (непонятная) и последняя строки:
тут совсем непонятно, т.к. вижу вначале ключевое слово template, а в конце фигурные скобки, то вроде это определение шаблонной функции.
Однако после имени функции идут фигурные скобки с неким содержимым, так обычно вызывают шаблонные функции.

Дак что же это в 2-ух последних строках?

напоминает перегруженные функции

Сообщение отредактировал Litkevich Yuriy - 9.12.2020, 11:50
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 22.11.2024, 12:34