我有以下矩阵;
Vertex axisVertices[] =
{
{ { x_0, y_0, 0.0f, 1.0f }, { 1.0f, 1.0f, 1.0f, 1.0f } }, // origin
{ { x_Max, y_0, 0.0f, 1.0f }, { 0.0f, 1.0f, 0.0f, 1.0f } }, // eixo y
{ { x_0, y_Max, 0.0f, 1.0f }, { 0.0f, 0.0f, 1.0f, 1.0f } } // eixo x
};
#define x_0 0.0f
#define y_0 0.0f
#define x_Max 1.5f
#define y_Max 1.7f
我需要能够像这样初始化矩阵。在C中,唯一可能的方法是定义枚举或使用定义,因为这样的初始化不能与常量一起使用。
问题是,我需要能够在整个代码中更改值
x_Max
和y_Max
,因此#define
在这种情况下不起作用。我怎样才能做到这一点? 最佳答案
您可以将参数传递到#defines
以创建macros
例如,你可以
#define INIT(x_0, y_0, x_Max, y_Max) \
{ { { x_0, y_0, 0.0f, 1.0f }, { 1.0f, 1.0f, 1.0f, 1.0f } }, \
{ { x_Max, y_0, 0.0f, 1.0f }, { 0.0f, 1.0f, 0.0f, 1.0f } }, \
{ { x_0, y_Max, 0.0f, 1.0f }, { 0.0f, 0.0f, 1.0f, 1.0f } } }
你可以这样用
Vertex axisVertices[] = INIT(0.0f, 0.0f, 1.5f, 1.7f);
然后所有出现的
x_0
将被0.0f
替换。就像把参数传递给函数一样。关于c - C初始化矩阵,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16136352/