加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C / GL:在无符号整数数组上使用-1作为哨兵

发布时间:2020-12-16 09:35:24 所属栏目:百科 来源:网络整理
导读:我在一些GL代码中传递一个顶点索引数组…每个元素都是一个GLushort 我希望用一个标记终止,以避免每次与数组本身一起费力地传递数组长度. #define SENTINEL ( (GLushort) -1 ) // edit thanks to answers below:GLushort verts = {0,2,1,SENTINEL}; 我不能使
我在一些GL代码中传递一个顶点索引数组…每个元素都是一个GLushort

我希望用一个标记终止,以避免每次与数组本身一起费力地传递数组长度.

#define SENTINEL ( (GLushort) -1 ) // edit thanks to answers below
:
GLushort verts = {0,2,1,SENTINEL};

我不能使用0来终止,因为一些元素的值为0

我可以使用-1吗?

根据我的理解,这将包装到GLushort可以表示的最大整数,这将是理想的.

但这种行为在C中是否得到保证?

(我找不到这种类型的MAX_INT等效常量,否则我会使用它)

解决方法

如果GLushort确实是无符号类型,则(GLushort)-1是GLushort的最大值. The C standard guarantees that.所以,你可以安全地使用-1.

例如,C89没有SIZE_MAX宏作为size_t的最大值.它可以由用户可移植地定义为#define SIZE_MAX((size_t)-1).

这是否可以作为代码中的标记值取决于(GLushort)-1是否是代码中的有效非标记值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读