C/C++ unreferenced formal parameter

Sep 29, 2004
18,656
67
91
I have a question about unreferenced formal parameters with callback functions. Since it is a callback function, I can not simply remove the unneeded parameters. So, this causes a warning to occur that says "unreferenced formal parameter".

How can I get rid of this? I'm sure there is a compiler setting, but is there anything I can do programatically to silence the warnings?

Thanks!

Any way to use pragma?
 

Cerebus451

Golden Member
Nov 30, 2000
1,425
0
76
Not positive, but I think if you only list the type of the parameter and don't give it a name, it won't complain. You can also turn down the warning level for the compiler. I think those are only reported at warning Level 4.
 
Sep 29, 2004
18,656
67
91
Originally posted by: Cerebus451
Not positive, but I think if you only list the type of the parameter and don't give it a name, it won't complain. You can also turn down the warning level for the compiler. I think those are only reported at warning Level 4.

AWESOME. The boldfaced text above is the solution I tried out and it did exactly what i wanted it to do!

Big thanks!
 

SunnyD

Belgian Waffler
Jan 2, 2001
32,674
146
106
www.neftastic.com
There's also a macro... I believe it's "UNREFERENCED_PARAM(x)" which will cause the compiler to reference it. You just call it in the function referencing whatever parameters you don't intend to use. I don't know what versions of VS have it other than 2008 though.
 

programmer

Senior member
Mar 12, 2003
412
0
0
C++ way is to not name the parameter, e.g. (long, long, long)

C way is a little more clear where you can void the parameter or, in windows, used the UNREFERENCED_PARAMETER() macro:

long myFunction(long a, long b, long)
{

void(a) // portable C way of specifying a parameter is unused to avoid compiler warning
UNREFERENCED_PARAMETER(b) // windows header method, not portable
// third param is voided out the C++ way

return 0;
}

Personally, I like the explicit void call ... actually if you really look at the windows macro, it is simply declaring the variable (without void) to declare its use, but without doing anything with it ...

#define UNREFERENCE_PARAMETER(P) (P)