Я хочу использовать тот же подход #ifdef
, который используется в WxWidgets, SDL и т. Д. Единственная проблема в том, что я не знаю, как его использовать.
Допустим, я хочу создать класс, который рисует прямоугольник. Я хочу, чтобы он использовал cairo на платформах X11 (например, linux) и GDI на платформах win32:
class graphics
{
void drawRect(int x, int y, int w, int h)
{
/*if on win32*/
HDC myHdc = ::BeginPaint(myHwnd,&mypstr);
::Rectangle(myHdc,x,y,w,h);
::EndPaint(myHwnd,&mypstr);
/*if on x11*/
cairo_surface_t* s = cairo_xlib_surface_create(/* args */);
cairo_t* c = cairo_create(s);
cairo_rectangle(c,x,y,w,h);
// etc. etc.
}
};
Как мне использовать #ifdef
или что-то еще для этого?