<div dir="ltr"><div>Windows.h defines UNREFERENCED_PARAMETER() for this purpose.  When I'm not working with code that includes that header I define it as:<br> UNREFERENCED_PARAMETER(P) (void)(P)<br><br></div>Unfortunately I couldn't use the same definition as was used in windows.h with clang without triggering another warning.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Aug 26, 2015 at 11:37 PM, Daniel Marjamäki <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Hello!<br>
<span class=""><br>
> I don't think it's fair to call this a false positive, unless the "XYZ" macro is defined.<br>
<br>
</span>I also agree it is not fair to call this a false positive. But technically it is a false positive. You and I can see that the variable is used.<br>
<br>
Well.. I had not much hope it would be possible. But asked anyway.<br>
<br>
Adding a redundant (void)x should be ok.<br>
<br>
Thanks!<br>
<span class="">Daniel Marjamäki<br>
<br>
..................................................................................................................<br>
Daniel Marjamäki Senior Engineer<br>
Evidente ES East AB  Warfvinges väg 34  SE-112 51 Stockholm  Sweden<br>
<br>
Mobile:                 <a href="tel:%2B46%20%280%29709%2012%2042%2062" value="+46709124262">+46 (0)709 12 42 62</a><br>
E-mail:                 <a href="mailto:Daniel.Marjamaki@evidente.se">Daniel.Marjamaki@evidente.se</a><br>
<br>
</span><a href="http://www.evidente.se" rel="noreferrer" target="_blank">www.evidente.se</a><br>
<br>
________________________________________<br>
Från: Gábor Horváth [<a href="mailto:xazax.hun@gmail.com">xazax.hun@gmail.com</a>]<br>
Skickat: den 27 augusti 2015 02:12<br>
Till: Vedant Kumar<br>
Kopia: Daniel Marjamäki; <a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
Ämne: Re: [cfe-dev] Is it possible to avoid FP when there is #ifdef in the code<br>
<span class=""><br>
On 26 August 2015 at 17:04, Vedant Kumar via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><mailto:<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>>> wrote:<br>
I don't think it's fair to call this a false positive, unless the "XYZ" macro is defined.<br>
<br>
The analyzer has to run the preprocessor to handle basic things like #include. Modifying the checker to do what you propose would require going from the AST -> source code, scanning for a preprocessor command, altering it, re-parsing it, re-running the checker etc.<br>
<br>
It would be easier to add a line like "(void) x;" to suppress the warning.<br>
<br>
Other possible workarounds (in case you have several unused variables):<br>
- You can use pragmas to disable some diagnostics for certain regions of code.<br>
- You can use compiler flags to disable some diagnostics for certain translation units.<br>
- You can always factor out platform dependent code to multiple files and have the #ifdef on includes.<br>
<br>
In general I do like that the compiler finds unused variables. Sometimes this uncovers real bugs. Sometimes it just helps to maintain readable code. IMHO it is better to have false positives than false negatives for this warning.<br>
<br>
<br>
best<br>
vedant<br>
<br>
</span><span class="">On Aug 26, 2015, at 1:35 AM, Daniel Marjamäki via cfe-dev <<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><mailto:<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>>> wrote:<br>
<br>
><br>
> Hello!<br>
><br>
> Sometimes there are false positives when #ifdef is used and for instance usage of some macro/parameter is hidden.<br>
><br>
> I am running Clang in a project where we get several such FPs.<br>
><br>
> Example code:<br>
><br>
> void f(int x) {<br>
>    // ..code..<br>
> #ifdef XYZ<br>
>    dostuff(x);<br>
> #endif<br>
>    // ..code..<br>
> }<br>
><br>
> Warning:<br>
> 1.c:1:12: warning: unused parameter 'x' [-Wunused-parameter]<br>
> void f(int x) {<br>
>           ^<br>
><br>
><br>
> Is there anything that can be done in the unused-parameter checker to prevent such FP?<br>
><br>
> For instance.. is it possible to see if there was a #ifdef in a function and disable the warning in that function.<br>
><br>
> Best regards,<br>
> Daniel Marjamäki<br>
><br>
><br>
> ..................................................................................................................<br>
> Daniel Marjamäki Senior Engineer<br>
> Evidente ES East AB  Warfvinges väg 34  SE-112 51 Stockholm  Sweden<br>
><br>
</span>> Mobile:                 <a href="tel:%2B46%20%280%29709%2012%2042%2062" value="+46709124262">+46 (0)709 12 42 62</a><tel:%2B46%20%280%29709%2012%2042%2062><br>
> E-mail:                 <a href="mailto:Daniel.Marjamaki@evidente.se">Daniel.Marjamaki@evidente.se</a><mailto:<a href="mailto:Daniel.Marjamaki@evidente.se">Daniel.Marjamaki@evidente.se</a>><br>
<span class="">><br>
> <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__www.evidente.se&d=BQIGaQ&c=eEvniauFctOgLOKGJOplqw&r=nRkKAYlatRp-Wgk-tAtmRg&m=PTXeK_fIRD2j8WdXUJM6t1ZgnTJCl_jei39eezo4pTA&s=KIaa8a7W1uU-ujhcrdhwjwrMYKCcDD71x-77CQL5wKs&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.com/v2/url?u=http-3A__www.evidente.se&d=BQIGaQ&c=eEvniauFctOgLOKGJOplqw&r=nRkKAYlatRp-Wgk-tAtmRg&m=PTXeK_fIRD2j8WdXUJM6t1ZgnTJCl_jei39eezo4pTA&s=KIaa8a7W1uU-ujhcrdhwjwrMYKCcDD71x-77CQL5wKs&e=</a><br>
> _______________________________________________<br>
> cfe-dev mailing list<br>
</span>> <a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><mailto:<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>><br>
<span class="">> <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Ddev&d=BQIGaQ&c=eEvniauFctOgLOKGJOplqw&r=nRkKAYlatRp-Wgk-tAtmRg&m=PTXeK_fIRD2j8WdXUJM6t1ZgnTJCl_jei39eezo4pTA&s=yZgb9XCd-JGQ_HwN0wTip7nQwkawracR5TZckpNTNmU&e=" rel="noreferrer" target="_blank">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Ddev&d=BQIGaQ&c=eEvniauFctOgLOKGJOplqw&r=nRkKAYlatRp-Wgk-tAtmRg&m=PTXeK_fIRD2j8WdXUJM6t1ZgnTJCl_jei39eezo4pTA&s=yZgb9XCd-JGQ_HwN0wTip7nQwkawracR5TZckpNTNmU&e=</a><br>
<br>
_______________________________________________<br>
cfe-dev mailing list<br>
</span><a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><mailto:<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a>><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
</div></div></blockquote></div><br></div>