【发布时间】:2014-01-25 02:26:37
【问题描述】:
我正在学习 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
}
【问题讨论】:
-
目前还不清楚你想用这个宏做什么。您是否只是想自动创建数组以获得这些值?
-
差不多,这将创建一个地方来更改绿色的值,而不必在多个地方进行编辑。
-
我想不出更简单的方法来做到这一点。为了减轻您对宏的担忧,您可以在声明 vertexData 之后立即
#undef GREEN_COLOR;这样它就达到了它的目的,但以后不能被滥用。 -
好的,那行得通。 GREEN_COLOR 可能会保持不变,但如果我想用另一个概念来做这件事,那就太好了。
-
这对我来说听起来是个非常糟糕的主意。
标签: c++ arrays macros c-preprocessor