Compiling #define FIVE 5
int main() { int i = 5; int const ic = 5; i < 5u; ic < 5u; FIVE < 5u; // line 10 } with -Wsign-compare produces the output pp.cpp:8: warning: comparison between signed and unsigned integer expressions pp.cpp:9: warning: comparison between signed and unsigned integer expressions MSVC only warns on line 8. G++'s current behaviour is unfortunate because it favors #defines over consts. Regards, Bruno MartÃnez -- Summary: -Wsign-compare and const propagation Product: gcc Version: 4.0.2 Status: UNCONFIRMED Severity: enhancement Priority: P2 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: br1 at internet dot com dot uy CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23608