这个问题对你们中的一些人来说可能非常愚蠢,但我对 C 编程很陌生。我目前正在用纯 C 创建一个 3D 引擎,我想知道如何使用 C 函数返回一个对象。
这是一个例子:
SDL_Vertex initTriangle (struct Point2D point1, struct Point2D point2, struct Point2D point3) {
SDL_Vertex triangleVertex[3]=
{
{
{ new_point1.x,new_point1.y },
{ 255, 255, 0, 0xFF },
{ 0.f, 0.f }
},
{
{ new_point2.x, new_point2.y },
{ 0,255,255, 0xFF },
{ 0.f, 0.f }
},
{
{ new_point3.x, new_point3.y },
{ 255,0,255, 0xFF },
{ 0.f, 0.f }
}
};
return triangleVertex;
};
SDL_Vertex triangleVertex[3] = initTriangle(...);
SDL_RenderGeometry(renderer, NULL, triangleVertex, 3, NULL, 0);
我想做类似的事情,但我需要让函数返回一个对象,就像我在做这个一样:
SDL_Vertex triangleVertex[3]=
{
{
{ new_point1.x,new_point1.y },
{ 255, 255, 0, 0xFF },
{ 0.f, 0.f }
},
{
{ new_point2.x, new_point2.y },
{ 0,255,255, 0xFF },
{ 0.f, 0.f }
},
{
{ new_point3.x, new_point3.y },
{ 255,0,255, 0xFF },
{ 0.f, 0.f }
}
};
SDL_RenderGeometry(renderer, NULL, triangleVertex, 3, NULL, 0);
预先感谢您,请原谅我的英语!
看起来您希望
initTriangle
返回 3 个 SDL_Vertex
的数组。
您不能以这种方式从 C 函数返回数组。
一种解决方案是接受它作为参数并将其填充到函数中:
void initTriangle (struct Point2D point1, struct Point2D point2, struct Point2D point3, SDL_Vertex triangleVertex[3])
{
triangleVertex[0] =
{
{ new_point1.x,new_point1.y },
{ 255, 255, 0, 0xFF },
{ 0.f, 0.f }
};
triangleVertex[1] =
{
{ new_point2.x, new_point2.y },
{ 0,255,255, 0xFF },
{ 0.f, 0.f }
};
triangleVertex[2] =
{
{ new_point3.x, new_point3.y },
{ 255,0,255, 0xFF },
{ 0.f, 0.f }
}
};
};
使用示例:
initTriangle(..., triangleVertex);