• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

C/C++ unreferenced formal parameter

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?
 
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.
 
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!
 
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.
 
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)

 
Back
Top