-
-
Notifications
You must be signed in to change notification settings - Fork 67
Open
Description
Reproducer:
#include "utest.h"
enum My_enum {
MY_ENUM_A,
MY_ENUM_B,
MY_ENUM_C,
};
UTEST(Utest, sign_compare)
{
enum My_enum e = MY_ENUM_A;
ASSERT_EQ(MY_ENUM_A, e);
}
UTEST_MAIN()
Compilation:
gcc -std=gnu11 -Wall -Wextra -pedantic src-test/main.c
In file included from src-test/main.c:1:
src-test/main.c: In function ‘utest_run_Utest_sign_compare’:
src-test/utest.h:828:42: warning: comparison of integer expressions of different signedness: ‘int’ and ‘unsigned int’ [-Wsign-compare]
828 | #define ASSERT_EQ(x, y) UTEST_COND(x, y, ==, "", 1)
| ^~
src-test/utest.h:783:18: note: in definition of macro ‘UTEST_COND’
783 | if (!((xEval)cond(yEval))) { \
| ^~~~
src-test/main.c:17:9: note: in expansion of macro ‘ASSERT_EQ’
17 | ASSERT_EQ(MY_ENUM_A, e);
| ^~~~~~~~~
This was surprising to me. Note that an explicit cast of the variable e
to int
compiles without warning. GCC version 12.2.0.
baronleonardo
Metadata
Metadata
Assignees
Labels
No labels