JordanCpp
> Не думал об этом. Есть мысли как улучшить?
Сделать данные используемые в функции доступными извне:
int a; int b; int c; int s; void draw () { s = a + b + c; }
iw4nna.rock
Глобальные переменные? Может лучше тогда передавать struct, типа как в directx. Хотя визуально порнухой выглядит.
Думаю разумней заменить на типы меньшего размера. Сейчас юзаю size_t 4 и 8 байт на x64.
//Добавлено
int32_t 4 байта на всех платформах. 2 байта, думаю маловато будет.
iw4nna.rock
> Сделать данные используемые в функции доступными извне
Чуть не поперхнулся. Лол
JordanCpp
> Глобальные переменные?
Не обязательно. Они могут быть частью пространства или структуры.
struct AB { int a; int b; }; AB ab; namespace CC { int c; } int s; void draw () { s = ab.a + ab.b + CC.c; }
iw4nna.rock
> Не обязательно. Они могут быть частью пространства или структуры.
Совсем не нравится. Такие изменения очень сильно влияют на подход к API.
JordanCpp
> Совсем не нравится. Такие изменения очень сильно влияют на подход к API
Иногда лучше сделать сразу правильно, чем долго и мучительно отвыкать от неправильного подхода.
iw4nna.rock
> Не обязательно. Они могут быть частью пространства или структуры.
Глобальная переменная, завёрнутая в namespace или структуру, не перестаёт от этого быть глобальной.
JordanCpp
Не слушай вредные советы. Оставляй как есть или передавай структурой, как в DirectX.
iw4nna.rock
> Иногда лучше сделать сразу правильно, чем долго и мучительно отвыкать от
> неправильного подхода.
Не уверен, что это правильный подход. Нигде не видел, что бы так писали. Это не совет от embedded?
Alprog
> Оставляй как есть или передавай структурой, как в DirectX.
Оставлю как есть. Только тип поменяю на uint32_t.
JordanCpp
> Не уверен, что это правильный подход
Я и не настаиваю. Тормоза в программе - личный выбор каждого разработчика.
> Нигде не видел, что бы так писали
99% разработчиков не умеют писать программы.
Alprog
> Глобальная переменная, завёрнутая в namespace или структуру, не перестаёт от
> этого быть глобальной
Что?
Мисс_Самец
> что функа делает?
Рисует на экране surface
Позиция куда x, y
Размер какой на экране w, h
Позиция откуда x, y
Размер какой w, h
Vec2u это size_t x, y
Пример
render.Draw(&image, Vec2u( start.x + pt.x + dx, start.y + pt.y + dy), Vec2u( tx, ty), tileSize);
Мисс_Самец
> апи конечно адовый
Как улучшить?
Почему срабатывает ассерт?
struct B { template <typename T> void operator () ( ) noexcept {} }; static_assert( std::is_nothrow_invocable_v< decltype( &B::template operator( )<int>) >);
typeid().name() возвращает имя функции с noexcept.
iw4nna.rock
> Сделать данные используемые в функции доступными извне:
>
> int a;
> int b;
> int c;
> int s;
>
> void draw ()
> {
> s = a + b + c;
> }
Лол. Покажи теперь пример с использованием draw, где рисуется несколько спрайтов вызовом этого самого draw().
MrShoor
> Лол. Покажи теперь пример с использованием draw, где рисуется несколько
> спрайтов вызовом этого самого draw().
for (auto & a : sprites) a.draw( );