在C ++中使用逗号的预处理器宏

时间:2014-01-25 02:26:37

标签: c++ arrays macros c-preprocessor

我正在通过arcsynthesis OpenGL教程,它经常使用宏,这是我一直在阅读的东西,我应该尽可能避免。我想知道是否有其他方法可以在不手动填写值的情况下执行以下操作(或者如果这是我应该做的):

#define GREEN_COLOR 0.75f, 0.75f, 1.0f, 1.0f

const float vertexData[] = {
    ..., //Vertex positions

    GREEN_COLOR,
    GREEN_COLOR,
    GREEN_COLOR,

    ..., //Rest of the colors
} 

1 个答案:

答案 0 :(得分:0)

预处理器不关心逗号,空格,。它将它们视为任何其他角色,并简单地用它们替换文本。唯一需要注意的是换行符,但是行尾的尾随\也会处理它们。例如:

#define GREEN_COLOR 0.75f,\
                    0.75f,\
                    1.0f, \
                    1.0f