Size: a a a

2020 March 22

O

Ofee in pro.cxx
#define просто устанавливает ограничение на счётчик. Мы, к сожалению, ограничены максимум 256-ю из-за ограничения Boost Preprocessor. Но там довольно большой пласт кода генерируется, так что по-дефолту стоит по-меньше. Да, мы уже думаем, как это без макросов написать
источник

AZ

Aleksander Zholtkovskii in pro.cxx
Народ, подскажите.
Хочу передать адрес регистра в качестве шаблонного параметра. Фокус не удаётся: https://ideone.com/R46Yty
источник

FS

Flower Surgeon in pro.cxx
Aleksander Zholtkovskii
Народ, подскажите.
Хочу передать адрес регистра в качестве шаблонного параметра. Фокус не удаётся: https://ideone.com/R46Yty
я подозреваю, что:

1. в коде какая-то дичь
2. там не нужны темплейты

https://ideone.com/Ol4QvN
источник

AZ

Aleksander Zholtkovskii in pro.cxx
Это вообще не то что мне нужно. Сказал же, надо передать адрес регистра шаблонным параметром.
источник

FS

Flower Surgeon in pro.cxx
Aleksander Zholtkovskii
Это вообще не то что мне нужно. Сказал же, надо передать адрес регистра шаблонным параметром.
Адрес — это тупо чиселка. Какие проблемы передать его аргументом шаблона? :)
источник

AZ

Aleksander Zholtkovskii in pro.cxx
Flower Surgeon
Адрес — это тупо чиселка. Какие проблемы передать его аргументом шаблона? :)
Что я и пытался сделать, а компилер шлёт меня лесом
источник

FS

Flower Surgeon in pro.cxx
Aleksander Zholtkovskii
Что я и пытался сделать, а компилер шлёт меня лесом
Всё правильно делает, ибо шаблоны так не объявляются.
источник

AZ

Aleksander Zholtkovskii in pro.cxx
Flower Surgeon
Всё правильно делает, ибо шаблоны так не объявляются.
Эээ?!
А как тогда?
источник

P

Pavel in pro.cxx
Эм. Рантайм параметр в шаблон передать не удастся :)
источник

FS

Flower Surgeon in pro.cxx
Вообще, я рекомендую в ЛС дискуссию увести, а то тут оффтоп получается.
источник

AZ

Aleksander Zholtkovskii in pro.cxx
Pavel
Эм. Рантайм параметр в шаблон передать не удастся :)
Да в каком месте он рантайм? Константа же
источник

P

Pavel in pro.cxx
Константа указатель, а не структура. Попробуй ради интереса constexpr структуру объявить и передать указатель из неё - вот так сработает
источник

AZ

Aleksander Zholtkovskii in pro.cxx
Pavel
Константа указатель, а не структура. Попробуй ради интереса constexpr структуру объявить и передать указатель из неё - вот так сработает
DEV объявлен именно так. Скажем это USART в микроконтроллере. Значение указателя на структуру вписано прямо. Адрес от поля структуры тоже как бы должен отлично вычисляться в комлитайме.
Как исправить код, чтобы получить указатель на поле в такой структуре?
источник

FS

Flower Surgeon in pro.cxx
Aleksander Zholtkovskii
DEV объявлен именно так. Скажем это USART в микроконтроллере. Значение указателя на структуру вписано прямо. Адрес от поля структуры тоже как бы должен отлично вычисляться в комлитайме.
Как исправить код, чтобы получить указатель на поле в такой структуре?
судя по коду выше — это, тупо, константа
источник

AZ

Aleksander Zholtkovskii in pro.cxx
Flower Surgeon
судя по коду выше — это, тупо, константа
Именно так
источник

P

Pavel in pro.cxx
Нужно, чтобы сама структура была доступна в компайл тайме, а не указатель на неё. Где она? Если значения в железе - как их получит компилятор?
источник

AZ

Aleksander Zholtkovskii in pro.cxx
Pavel
Нужно, чтобы сама структура была доступна в компайл тайме, а не указатель на неё. Где она? Если значения в железе - как их получит компилятор?
она прямо по адресу который описан в коде и всегда там находится
источник

P

Pavel in pro.cxx
Только компилятор не ходит по таким адресам :) В данном случае можно не использовать структуру и руками прописать, что указатель на рег1 - это dev_base, а указатель на рег2 - dev_base + 4
источник

АК

Александр Караев in pro.cxx
Aleksander Zholtkovskii
Народ, подскажите.
Хочу передать адрес регистра в качестве шаблонного параметра. Фокус не удаётся: https://ideone.com/R46Yty
Не умеет компилятор в такое, увы. Он не может гарантировать валидность адресов, переданных в шаблон, поэтому и не принимает их. Не скомпилируется даже код с template <DEV* d = (DEV*)0x123>
источник

АК

Александр Караев in pro.cxx
Ну а ещё reinterpret_cast запрещен в constexpr
источник