[Bug c/59495] -ftrack-macro-expansion=2 ignores warnings originated from /usr/include headers
doront at mellanox dot com
gcc-bugzilla@gcc.gnu.org
Sun Dec 15 12:27:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59495
--- Comment #3 from Doron Tsur <doront at mellanox dot com> ---
It is probably a false positive bug - warning is undetected.
Consider the following code:
$ cat define_compare_test.c
#include "define_compare_test.h"
#include <stdio.h>
int main(int argc __attribute__((unused)), char** argv __attribute__((unused)))
{
const int number_int = -1;
const unsigned int number_unsigned_int = 0xFFFFFFFF;
printf("%d and %u are %s\n", number_int, number_unsigned_int,
DEFINE_COMPARE(number_int, number_unsigned_int) );
return 0;
}
$ cat define_compare_test/define_compare_test.h
#define DEFINE_COMPARE(X,Y) \
((X)==(Y)) ? "equal" : "different"
$ ... cp -v define_compare_test/define_compare_test.h /usr/include
'define_compare_test/define_compare_test.h' ->
'/usr/include/define_compare_test.h'
$ gcc -Wall -Wextra -Werror define_compare_test.c -I define_compare_test -H
. define_compare_test/define_compare_test.h
...
In file included from define_compare_test.c:1:0:
define_compare_test.c: In function 'main':
define_compare_test/define_compare_test.h:3:7: error: comparison between signed
and unsigned integer expressions [-Werror=sign-compare]
((X)==(Y)) ? "equal" : "different"
^
define_compare_test.c:9:9: note: in expansion of macro 'DEFINE_COMPARE'
DEFINE_COMPARE(number_int, number_unsigned_int) );
^
Multiple include guards may be useful for:
/usr/include/wchar.h
...
/usr/include/x86_64-linux-gnu/gnu/stubs.h
define_compare_test/define_compare_test.h
cc1: all warnings being treated as errors
$ gcc -Wall -Wextra -Werror define_compare_test.c -H
. /usr/include/define_compare_test.h
. /usr/include/stdio.h
...
Multiple include guards may be useful for:
/usr/include/define_compare_test.h
/usr/include/wchar.h
...
$ ./a.out
-1 and 4294967295 are equal
More information about the Gcc-bugs
mailing list