Почему GLsizei не определен как неподписанный? - PullRequest
5 голосов
/ 25 января 2012

Я искал typedef из GLsizei для реализации OpenGL ES 1.1 на iOS и с удивлением обнаружил, что она была определена как int.Некоторый быстрый поиск в Google показал, что это нормально.(Включая обычный OpenGL.)

Я ожидал, что он будет определен как unsigned int или size_t.Почему это определяется как просто ваниль int?

1 Ответ

5 голосов
/ 25 января 2012

Кажется маловероятным, чтобы это было проблемой, если только у вас не возникнут какие-либо структуры данных размером 4 ГБ.

Вот чей-то ответ: http://oss.sgi.com/archives/ogl-sample/2005-07/msg00003.html

Quote:

(1) Arithmetic on unsigned values in C doesn't always yield intuitively
correct results (e.g. width1-width2 is positive when width1<width2).
Compilers offer varying degrees of diagnosis when unsigned ints appear
to be misused.  Making sizei a signed type eliminates many sources of
semantic error and some irrelevant diagnostics from the compilers.  (At
the cost of reducing the range of sizei, of course, but for the places
sizei is used that's rarely a problem.)

(2) Some languages that support OpenGL bindings lack (lacked? not sure
about present versions of Fortran) unsigned types, so by sticking to
signed types as much as possible there would be fewer problems using
OpenGL in those languages.

Оба объяснения кажутся правдоподобными - я 'Я сам несколько раз сталкивался с 1), когда тупо использовал NSUInteger для счетчика цикла (подсказка: не делайте этого, особенно при обратном отсчете до нуля).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...