CImg库中的语法奇怪,不知道它叫什么

时间:2015-05-11 01:18:12

标签: c++ function cimg

我一直在使用CImg生成一些图像,但我发现了一种奇怪的语法,我不知道它叫什么。它允许你做这样的事情:

cimg_forXYC(image, x, y, z){
    // I can set things about the image here
    image(x, y, z) = 100.;
}

我之前从未遇到过这种奇怪的用户定义的自定义风格函数。它叫什么,它是如何创造的?

1 个答案:

答案 0 :(得分:0)

cimg_forXYC是一个macro,它大致取代for循环,用于循环图像维度:

cimg_forXYC(img,x,y,v) : equivalent to : cimg_forC(img,v) cimg_forXY(img,x,y)

cimg_forC(img,v) : equivalent to : for (int v = 0; v<img.spectrum(); v++)
cimg_forXY(img,x,y) : equivalent to : cimg_forY(img,y) cimg_forX(img,x)

最后

cimg_forX(img,x) : equivalent to : for (int x = 0; x<img.width(); x++)

如果您check the documentation,您会看到所有细节。

您的image.operator()(int, int, int)会返回一个引用,因此您可以按照自己的方式使用它。