я следующий код:Преобразование целых чисел с разной мощностью
// ---- third party library code ----
struct Point { int16_t x, y; };
void third_party_library__getPoint(Point*);
void third_party_library__setPoint(const Point*);
// ---- my library code ----
void move_point(int dx, int dy)
{
Point pt;
third_party_library__getPoint(&pt);
pt.x += dx;
pt.y += dy;
third_party_library__setPoint(&pt);
}
Line pt.x += dx;
дает предупреждение
conversion from 'int' to 'int16_t', possible loss of data
Что я должен делать?
- отключить предупреждение для тех линий
- переместить источник предупреждения интерфейса: сделать
dx
иdy
int16_t, поэтому тот, кто будет использоватьmove_point
функции будет иметь дело с этой проблемой. - только литые
dx
иdy
до int16_t. - добавьте
assert(dx <= 0x7FFF && dx >= -0x8000 && "too large 'dx' value")
и надеемся, что он ударит, когда я запустил отладочную версию.
Определенно не 1. –