DirectXのサンプルなんかでよくある、

#define RELEASE(i) if(i){i->Release();i=NULL;}
BOOL EndDirectDraw(void){
RELEASE(lpFront);
RELEASE(lpDD);
return TRUE;
}

これがよく分かりません。
これの一行目が分かりません。
defineということなので何らかの定義をしてるってことは分かるんですが…
どういうことなんでしょうか?