nie kompilujący się define

0

Witam,
Nie kompiluje mi się ten fragment kodu:

#define ReleaseCOM(x) { if((x)!=NULL) (x)−>Release(); (x)=NULL; }

ale jak oleję define'a i dam tak jak niżej to już się kompiluje.

if(pVBn!= NULL) {pVBn->Release(); pVBn=NULL;}

Błąd jak wywala to:
error C2146: syntax error : missing ';' before identifier '−'
error C2065: '−' : undeclared identifier

0

1.Pokaż jak wywołujesz to define.
2.Spójrz na nawiasy klamrowe w tym defineu - są inaczej ułożone niż w przykładzie.

0
#define ReleaseCOM(x) { if((x)!=NULL) { (x)−>Release(); (x)=NULL; } }

Ale tak czy owak zrób lepiej normalną funkcję.

1

tak swoją drogą jak już robisz tego typu define-y to definiuj je tak:

#define ReleaseCOM(x)  do { if((x)!=NULL) (x)−>Release(); (x)=NULL; } while (false)

inaczej takie coś:

if (...)
  ReleaseCOM(x);
else
  ...;

spowoduje błąd kompilacji. Posłuchaj @_13th_Dragon. Funkcja będzie lepsza. Kompilator sam poprawi to na wersję inline jak stwierdzi, że się opłaca.

1 użytkowników online, w tym zalogowanych: 0, gości: 1