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是否是代码中的有效非标记值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |