マクロのオーバーロードについては、すでに多くの質問/回答があります。しかし、それを自分の問題に適用する方法が見つかりません。
Cで3D画像に値を簡単に割り当てたいと思います。今のところ、次のようにします。
#define IMGET(im,y,x,c) im.data[(y)+im.height*((x)+im.width*(c))]
#define IMSET(im,y,x,c,v) IMGET(im,y,x,c)=v
それはうまくいきます。
ただし、2D のみの白黒画像がある場合にも使用したいと思います。そんな感じ:
#define IMGET(im,y,x,c) im.data[(y)+im.height*((x)+im.width*(c))] //3D case
#define IMSET(im,y,x,c,v) IMGET(im,y,x,c)=v //3D case
#define IMGET(im,y,x) im.data[(y)+im.height*(x)] //2D case
#define IMSET(im,y,x,v) IMGET(im,y,x)=v //2D case
出来ますか?