<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>On Jan 13, 2014, at 1:24 PM, Richard Trieu <<a href="mailto:rtrieu@google.com">rtrieu@google.com</a>> wrote:</div><div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jan 13, 2014 at 3:06 AM, Prathamesh Kulkarni <span dir="ltr"><<a href="mailto:bilbotheelffriend@gmail.com" target="_blank">bilbotheelffriend@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">For the following test-case:<br>
#ifndef FOO<br>
#define FOO2<br>
<br>
#undef FOO2<br>
#endif<br>
<br>
-Wheader-guard emits warning:<br>
./foo.h:4:9: warning: 'FOO' is used as a header guard here, followed<br>
by #define of a different macro [-Wheader-guard]<br>
#ifndef FOO<br>
        ^~~<br>
./foo.h:5:9: note: 'FOO2' is defined here; did you mean 'FOO'?<br>
#define FOO2<br>
        ^~~~<br>
<br>
Is this appropriate or should it suppress warning in this case<br>
since it's equivalent to the following: ?<br>
#ifndef FOO<br>
#endif<br>
<br>
Thanks and Regards,<br>
Prathamesh<br>
_______________________________________________<br>
cfe-dev mailing list<br>
<a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>
</blockquote></div><br></div><div class="gmail_extra">Oops, forgot to include the mailing list.  Sorry for the double email, Prathamesh.</div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_extra">
Prathamesh,</div><div class="gmail_extra"><br></div><div class="gmail_extra">Can you tell me more about your use case?  Is this a common pattern you have encountered?</div><div class="gmail_extra"><br></div><div class="gmail_extra">
The header guard warning triggers on files with the following format:</div><div class="gmail_extra"><br></div><div class="gmail_extra">// Start of file</div><div class="gmail_extra">#ifndef Macro1</div><div class="gmail_extra">
#define Macro2</div><div class="gmail_extra">...</div><div class="gmail_extra">#endif // matches the #ifndef on the first line.</div><div class="gmail_extra">// End of file</div><div class="gmail_extra"><br></div><div class="gmail_extra">
and warns when Macro1 and Macro2 are close, but not exactly the same.  The warning already ignores cases where Macro1 and Macro2 are very different (edit distance is over half the length).  A similar exemption maybe be warranted in this case too.</div></div></div></blockquote><div><br></div><div>Could we maybe not warn if the the #ifndef and #define are separated by at least one empty line ?</div><br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra">
</div></div>
_______________________________________________<br>cfe-dev mailing list<br><a href="mailto:cfe-dev@cs.uiuc.edu">cfe-dev@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev<br></blockquote></div><br></body></html>