那么类型int2,int3,float2,float3等

时间:2010-11-02 15:51:15

标签: c++

我已经看到使用这些类型的不同代码片段,但我还没有看到它们是否在某些<标准头文件>中定义。或者只是在“本地头文件”中定义,或者甚至在文件级别定义。

所以我想知道的是:是否有任何标准头文件定义这些类型?或者是否有一些每个人都使用的标准定义我应该复制?

我猜这些类型的可能和常见用途是表示坐标,我错了吗?

如果我想用这些来表示网格中的位置,还有什么我应该考虑的吗?是什么原因或为什么不使用它们?

编辑:

澄清:int2表示一对整数,float3表示浮动的三元组。

如果这些类型是在某处预定义的,那么使用它们会很好,而不必从头开始编写,包括标准代数函数(operator +,operator-等)。

5 个答案:

答案 0 :(得分:20)

这些类型不是标准C ++的一部分。它们可能在某些第三方库中定义,或者您正在查看其他一些方言或语言。

GPU代码(像GLSL,Cg或HLSL这样的着色器语言,或者像CUDA或OpenCL这样的GPGPU)通常会定义类似这些类型的类型,作为相应SIMD数据类型的名称。

答案 1 :(得分:8)

它们用在CUDA(和openCL?)中,你有特定大小的浮点数和内存使用率,并且对齐是一个大问题。

答案 2 :(得分:1)

AFAIK没有定义这些类型的标准头文件。 根据您的说明int2表示一对两个int,可以用C ++表示为std::pair<int, int>

答案 3 :(得分:1)

我使用&lt; stdint.h&gt;中定义的POSIX类型。似乎每个人都为自己的名字定义了自己的名字,而且我有一个名字碰撞的项目。对于我来说,不为类型定义我自己的“宠物”名称已经成为一种新的范例。

答案 4 :(得分:0)

这些类型不标准,我从未见过它们。你确定它们不被用作(可怕的选择)标识符而不是类型吗?

一些非常可能的非标准类型是int32_tuint64_t等。(这些是由C99指定的,因此大多数现代C ++编译器也允许您在C ++中使用它们。)