We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Is there a way to mock functions which accept function pointers as parameters?
typedef int mbedtls_ctr_drbg_context; typedef int (*f_entropy_t)(void*, unsigned char*, size_t); int mbedtls_ctr_drbg_seed(mbedtls_ctr_drbg_context* ctx, f_entropy_t f_entropy, void* p_entropy, const unsigned char* custom, size_t len) { return 0; } mmk_mock_define( mbedtls_ctr_drbg_seed_mock, int, mbedtls_ctr_drbg_context*, f_entropy_t, void*, const unsigned char*, size_t ); void test_simple_case_b(void) { mbedtls_ctr_drbg_seed_mock mcdsm = mmk_mock("mbedtls_ctr_drbg_seed", mbedtls_ctr_drbg_seed_mock); mmk_assert((mmk_fn)mcdsm != MMK_MOCK_INVALID); mmk_when( mbedtls_ctr_drbg_seed( mmk_any(mbedtls_ctr_drbg_context*), mmk_any(f_entropy_t), mmk_any(void*), mmk_any(const unsigned char*), mmk_any(size_t) ), .then_return = &(int) { 1 } ); mmk_reset(mbedtls_ctr_drbg_seed); }
Results in:
# make [ 10%] Built target strdup [ 70%] Built target mimick Scanning dependencies of target strdup_test [ 75%] Building C object sample/strdup/CMakeFiles/strdup_test.dir/test.c.o In file included from ~/Mimick/include/mimick.h:28, from ~/Mimick/sample/strdup/test.c:1: ~/Mimick/sample/strdup/test.c: In function ‘mmkuser_mbedtls_ctr_drbg_seed_mock_stub’: ~/Mimick/include/mimick/mock.h:150:31: error: ISO C forbids ordered comparisons of pointers to functions [-Werror=pedantic] 150 | if (p->param ## N < param ## N \ | ^ ~/Mimick/include/mimick/preprocess.h:40:24: note: in definition of macro ‘MMK_EXPAND’ 40 | # define MMK_EXPAND(x) x | ^ ~/Mimick/include/mimick/mock.h:416:5: note: in expansion of macro ‘MMK_EXPAND’ 416 | MMK_EXPAND(MMK_COND_VOID( \ | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:604:54: note: in expansion of macro ‘MMK_EXPAND’ 604 | # define MMK_COND_VOID(Macro, Params1, Params2, ...) MMK_EXPAND(MMK_VOID_SELECT(Macro, Params1, Params2, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:597:57: note: in expansion of macro ‘MMK_EXPAND’ 597 | # define MMK_VOID_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VOID_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VOID_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:599:42: note: in expansion of macro ‘MMK_EXPAND’ 599 | # define MMK_VOID_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:600:42: note: in expansion of macro ‘MMK_EXPAND’ 600 | # define MMK_VOID_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:601:60: note: in expansion of macro ‘MMK_EXPAND’ 601 | # define MMK_VOID_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:318:21: note: in expansion of macro ‘MMK_EXPAND’ 318 | MMK_EXPAND(MMK_APPLY_N(MMK_TRYVERIFY, Id, __VA_ARGS__)) \ | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:164:27: note: in expansion of macro ‘MMK_EXPAND’ 164 | # define MMK_APPLY_N(...) MMK_EXPAND(MMK_APPLY_N_SELECT(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:157:49: note: in expansion of macro ‘MMK_EXPAND’ 157 | # define MMK_APPLY_N_SELECT(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER(MMK_VA_TAIL_SELECT(__VA_ARGS__), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:159:45: note: in expansion of macro ‘MMK_EXPAND’ 159 | # define MMK_APPLY_N_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:160:45: note: in expansion of macro ‘MMK_EXPAND’ 160 | # define MMK_APPLY_N_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:162:58: note: in expansion of macro ‘MMK_EXPAND’ 162 | # define MMK_APPLY_N_SELECT_HELPER_2(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_NE(Macro, Prefix, MMK_VA_TAIL(__VA_ARGS__))) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:155:45: note: in expansion of macro ‘MMK_EXPAND’ 155 | # define MMK_APPLY_N_NE(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_(Macro, MMK_VA_NARGS(,__VA_ARGS__), Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:154:46: note: in expansion of macro ‘MMK_EXPAND’ 154 | # define MMK_APPLY_N_(Macro, n, Prefix, ...) MMK_EXPAND(MMK_APPLY_N__(Macro, Prefix, n, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:153:47: note: in expansion of macro ‘MMK_EXPAND’ 153 | # define MMK_APPLY_N__(Macro, Prefix, n, ...) MMK_EXPAND(MMK_APPLY_N##n(0, Macro, Prefix, __VA_ARGS__,)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:92:76: note: in expansion of macro ‘MMK_EXPAND’ 92 | # define MMK_APPLY_N6(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N5 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:139:36: note: in expansion of macro ‘MMK_EXPAND’ 139 | # define MMK_TRYVERIFY(N, Name, T) MMK_EXPAND(MMK_TRYVERIFY_(N, Name, T)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:617:52: note: in expansion of macro ‘MMK_EXPAND’ 617 | # define MMK_COND_VA(Macro, Params1, Params2, Tok) MMK_EXPAND(MMK_VA_SELECT(Macro, Params1, Params2, Tok)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:610:55: note: in expansion of macro ‘MMK_EXPAND’ 610 | # define MMK_VA_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VA_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VA_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:612:40: note: in expansion of macro ‘MMK_EXPAND’ 612 | # define MMK_VA_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:613:40: note: in expansion of macro ‘MMK_EXPAND’ 613 | # define MMK_VA_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:614:58: note: in expansion of macro ‘MMK_EXPAND’ 614 | # define MMK_VA_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:132:5: note: in expansion of macro ‘MMK_EXPAND’ 132 | MMK_EXPAND(MMK_TRYVERIFY_VA_ ## Id (__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:132:16: note: in expansion of macro ‘MMK_TRYVERIFY_VA_WITHOU ’ 132 | MMK_EXPAND(MMK_TRYVERIFY_VA_ ## Id (__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:614:69: note: in expansion of macro ‘MMK_TRYVERIFY_VA’ 614 | # define MMK_VA_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:613:51: note: in expansion of macro ‘MMK_VA_SELECT_HELPER_1’ 613 | # define MMK_VA_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:612:51: note: in expansion of macro ‘MMK_VA_SELECT_HELPER_’ 612 | # define MMK_VA_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:610:66: note: in expansion of macro ‘MMK_VA_SELECT_HELPER’ 610 | # define MMK_VA_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VA_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VA_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:617:63: note: in expansion of macro ‘MMK_VA_SELECT’ 617 | # define MMK_COND_VA(Macro, Params1, Params2, Tok) MMK_EXPAND(MMK_VA_SELECT(Macro, Params1, Params2, Tok)) | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:137:5: note: in expansion of macro ‘MMK_COND_VA’ 137 | MMK_COND_VA(MMK_TRYVERIFY_VA, (WITHOUT, N, Name, T,), (WITH,), T) | ^~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:139:47: note: in expansion of macro ‘MMK_TRYVERIFY_’ 139 | # define MMK_TRYVERIFY(N, Name, T) MMK_EXPAND(MMK_TRYVERIFY_(N, Name, T)) | ^~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:91:53: note: in expansion of macro ‘MMK_TRYVERIFY’ 91 | # define MMK_APPLY_N5(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N4 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:92:87: note: in expansion of macro ‘MMK_APPLY_N5’ 92 | # define MMK_APPLY_N6(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N5 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:153:58: note: in expansion of macro ‘MMK_APPLY_N6’ 153 | # define MMK_APPLY_N__(Macro, Prefix, n, ...) MMK_EXPAND(MMK_APPLY_N##n(0, Macro, Prefix, __VA_ARGS__,)) | ^~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:154:57: note: in expansion of macro ‘MMK_APPLY_N__’ 154 | # define MMK_APPLY_N_(Macro, n, Prefix, ...) MMK_EXPAND(MMK_APPLY_N__(Macro, Prefix, n, __VA_ARGS__)) | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:155:56: note: in expansion of macro ‘MMK_APPLY_N_’ 155 | # define MMK_APPLY_N_NE(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_(Macro, MMK_VA_NARGS(,__VA_ARGS__), Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:162:69: note: in expansion of macro ‘MMK_APPLY_N_NE’ 162 | # define MMK_APPLY_N_SELECT_HELPER_2(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_NE(Macro, Prefix, MMK_VA_TAIL(__VA_ARGS__))) | ^~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:160:56: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER_2’ 160 | # define MMK_APPLY_N_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:159:56: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER_’ 159 | # define MMK_APPLY_N_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:157:60: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER’ 157 | # define MMK_APPLY_N_SELECT(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER(MMK_VA_TAIL_SELECT(__VA_ARGS__), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:164:38: note: in expansion of macro ‘MMK_APPLY_N_SELEC ’ 164 | # define MMK_APPLY_N(...) MMK_EXPAND(MMK_APPLY_N_SELECT(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:318:32: note: in expansion of macro ‘MMK_APPLY_N’ 318 | MMK_EXPAND(MMK_APPLY_N(MMK_TRYVERIFY, Id, __VA_ARGS__)) \ | ^~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:601:71: note: in expansion of macro ‘MMK_MOCK_DEFINE’ 601 | # define MMK_VOID_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:600:53: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER_1’ 600 | # define MMK_VOID_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:599:53: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER_’ 599 | # define MMK_VOID_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:597:68: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER’ 597 | # define MMK_VOID_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VOID_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VOID_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:604:65: note: in expansion of macro ‘MMK_VOID_SELECT’ 604 | # define MMK_COND_VOID(Macro, Params1, Params2, ...) MMK_EXPAND(MMK_VOID_SELECT(Macro, Params1, Params2, __VA_ARGS__)) | ^~~~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:416:16: note: in expansion of macro ‘MMK_COND_VOID’ 416 | MMK_EXPAND(MMK_COND_VOID( \ | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:407:16: note: in expansion of macro ‘MMK_MOCK_DEFINE_IMPL’ 407 | MMK_EXPAND(MMK_MOCK_DEFINE_IMPL(Id, \ | ^~~~~~~~~~~~~~~~~~~~ ~/Mimick/sample/strdup/test.c:43:1: note: in expansion of macro ‘mmk_mock_define’ 43 | mmk_mock_define( | ^~~~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:153:31: error: ISO C forbids ordered comparisons of pointers to functions [-Werror=pedantic] 153 | if (p->param ## N > param ## N \ | ^ ~/Mimick/include/mimick/preprocess.h:40:24: note: in definition of macro ‘MMK_EXPAND’ 40 | # define MMK_EXPAND(x) x | ^ ~/Mimick/include/mimick/mock.h:416:5: note: in expansion of macro ‘MMK_EXPAND’ 416 | MMK_EXPAND(MMK_COND_VOID( \ | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:604:54: note: in expansion of macro ‘MMK_EXPAND’ 604 | # define MMK_COND_VOID(Macro, Params1, Params2, ...) MMK_EXPAND(MMK_VOID_SELECT(Macro, Params1, Params2, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:597:57: note: in expansion of macro ‘MMK_EXPAND’ 597 | # define MMK_VOID_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VOID_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VOID_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:599:42: note: in expansion of macro ‘MMK_EXPAND’ 599 | # define MMK_VOID_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:600:42: note: in expansion of macro ‘MMK_EXPAND’ 600 | # define MMK_VOID_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:601:60: note: in expansion of macro ‘MMK_EXPAND’ 601 | # define MMK_VOID_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:318:21: note: in expansion of macro ‘MMK_EXPAND’ 318 | MMK_EXPAND(MMK_APPLY_N(MMK_TRYVERIFY, Id, __VA_ARGS__)) \ | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:164:27: note: in expansion of macro ‘MMK_EXPAND’ 164 | # define MMK_APPLY_N(...) MMK_EXPAND(MMK_APPLY_N_SELECT(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:157:49: note: in expansion of macro ‘MMK_EXPAND’ 157 | # define MMK_APPLY_N_SELECT(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER(MMK_VA_TAIL_SELECT(__VA_ARGS__), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:159:45: note: in expansion of macro ‘MMK_EXPAND’ 159 | # define MMK_APPLY_N_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:160:45: note: in expansion of macro ‘MMK_EXPAND’ 160 | # define MMK_APPLY_N_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:162:58: note: in expansion of macro ‘MMK_EXPAND’ 162 | # define MMK_APPLY_N_SELECT_HELPER_2(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_NE(Macro, Prefix, MMK_VA_TAIL(__VA_ARGS__))) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:155:45: note: in expansion of macro ‘MMK_EXPAND’ 155 | # define MMK_APPLY_N_NE(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_(Macro, MMK_VA_NARGS(,__VA_ARGS__), Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:154:46: note: in expansion of macro ‘MMK_EXPAND’ 154 | # define MMK_APPLY_N_(Macro, n, Prefix, ...) MMK_EXPAND(MMK_APPLY_N__(Macro, Prefix, n, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:153:47: note: in expansion of macro ‘MMK_EXPAND’ 153 | # define MMK_APPLY_N__(Macro, Prefix, n, ...) MMK_EXPAND(MMK_APPLY_N##n(0, Macro, Prefix, __VA_ARGS__,)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:92:76: note: in expansion of macro ‘MMK_EXPAND’ 92 | # define MMK_APPLY_N6(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N5 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:139:36: note: in expansion of macro ‘MMK_EXPAND’ 139 | # define MMK_TRYVERIFY(N, Name, T) MMK_EXPAND(MMK_TRYVERIFY_(N, Name, T)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:617:52: note: in expansion of macro ‘MMK_EXPAND’ 617 | # define MMK_COND_VA(Macro, Params1, Params2, Tok) MMK_EXPAND(MMK_VA_SELECT(Macro, Params1, Params2, Tok)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:610:55: note: in expansion of macro ‘MMK_EXPAND’ 610 | # define MMK_VA_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VA_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VA_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:612:40: note: in expansion of macro ‘MMK_EXPAND’ 612 | # define MMK_VA_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:613:40: note: in expansion of macro ‘MMK_EXPAND’ 613 | # define MMK_VA_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:614:58: note: in expansion of macro ‘MMK_EXPAND’ 614 | # define MMK_VA_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:132:5: note: in expansion of macro ‘MMK_EXPAND’ 132 | MMK_EXPAND(MMK_TRYVERIFY_VA_ ## Id (__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:132:16: note: in expansion of macro ‘MMK_TRYVERIFY_VA_WITHOU ’ 132 | MMK_EXPAND(MMK_TRYVERIFY_VA_ ## Id (__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:614:69: note: in expansion of macro ‘MMK_TRYVERIFY_VA’ 614 | # define MMK_VA_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:613:51: note: in expansion of macro ‘MMK_VA_SELECT_HELPER_1’ 613 | # define MMK_VA_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:612:51: note: in expansion of macro ‘MMK_VA_SELECT_HELPER_’ 612 | # define MMK_VA_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:610:66: note: in expansion of macro ‘MMK_VA_SELECT_HELPER’ 610 | # define MMK_VA_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VA_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VA_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:617:63: note: in expansion of macro ‘MMK_VA_SELECT’ 617 | # define MMK_COND_VA(Macro, Params1, Params2, Tok) MMK_EXPAND(MMK_VA_SELECT(Macro, Params1, Params2, Tok)) | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:137:5: note: in expansion of macro ‘MMK_COND_VA’ 137 | MMK_COND_VA(MMK_TRYVERIFY_VA, (WITHOUT, N, Name, T,), (WITH,), T) | ^~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:139:47: note: in expansion of macro ‘MMK_TRYVERIFY_’ 139 | # define MMK_TRYVERIFY(N, Name, T) MMK_EXPAND(MMK_TRYVERIFY_(N, Name, T)) | ^~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:91:53: note: in expansion of macro ‘MMK_TRYVERIFY’ 91 | # define MMK_APPLY_N5(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N4 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:92:87: note: in expansion of macro ‘MMK_APPLY_N5’ 92 | # define MMK_APPLY_N6(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N5 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:153:58: note: in expansion of macro ‘MMK_APPLY_N6’ 153 | # define MMK_APPLY_N__(Macro, Prefix, n, ...) MMK_EXPAND(MMK_APPLY_N##n(0, Macro, Prefix, __VA_ARGS__,)) | ^~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:154:57: note: in expansion of macro ‘MMK_APPLY_N__’ 154 | # define MMK_APPLY_N_(Macro, n, Prefix, ...) MMK_EXPAND(MMK_APPLY_N__(Macro, Prefix, n, __VA_ARGS__)) | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:155:56: note: in expansion of macro ‘MMK_APPLY_N_’ 155 | # define MMK_APPLY_N_NE(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_(Macro, MMK_VA_NARGS(,__VA_ARGS__), Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:162:69: note: in expansion of macro ‘MMK_APPLY_N_NE’ 162 | # define MMK_APPLY_N_SELECT_HELPER_2(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_NE(Macro, Prefix, MMK_VA_TAIL(__VA_ARGS__))) | ^~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:160:56: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER_2’ 160 | # define MMK_APPLY_N_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:159:56: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER_’ 159 | # define MMK_APPLY_N_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:157:60: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER’ 157 | # define MMK_APPLY_N_SELECT(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER(MMK_VA_TAIL_SELECT(__VA_ARGS__), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:164:38: note: in expansion of macro ‘MMK_APPLY_N_SELEC ’ 164 | # define MMK_APPLY_N(...) MMK_EXPAND(MMK_APPLY_N_SELECT(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:318:32: note: in expansion of macro ‘MMK_APPLY_N’ 318 | MMK_EXPAND(MMK_APPLY_N(MMK_TRYVERIFY, Id, __VA_ARGS__)) \ | ^~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:601:71: note: in expansion of macro ‘MMK_MOCK_DEFINE’ 601 | # define MMK_VOID_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:600:53: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER_1’ 600 | # define MMK_VOID_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:599:53: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER_’ 599 | # define MMK_VOID_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:597:68: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER’ 597 | # define MMK_VOID_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VOID_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VOID_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:604:65: note: in expansion of macro ‘MMK_VOID_SELECT’ 604 | # define MMK_COND_VOID(Macro, Params1, Params2, ...) MMK_EXPAND(MMK_VOID_SELECT(Macro, Params1, Params2, __VA_ARGS__)) | ^~~~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:416:16: note: in expansion of macro ‘MMK_COND_VOID’ 416 | MMK_EXPAND(MMK_COND_VOID( \ | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:407:16: note: in expansion of macro ‘MMK_MOCK_DEFINE_IMPL’ 407 | MMK_EXPAND(MMK_MOCK_DEFINE_IMPL(Id, \ | ^~~~~~~~~~~~~~~~~~~~ ~/Mimick/sample/strdup/test.c:43:1: note: in expansion of macro ‘mmk_mock_define’ 43 | mmk_mock_define( | ^~~~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:115:28: error: ISO C forbids ordered comparisons of pointers to functions [-Werror=pedantic] 115 | if (param ## N < bind->params.param ## N \ | ^ ~/Mimick/include/mimick/preprocess.h:40:24: note: in definition of macro ‘MMK_EXPAND’ 40 | # define MMK_EXPAND(x) x | ^ ~/Mimick/include/mimick/mock.h:416:5: note: in expansion of macro ‘MMK_EXPAND’ 416 | MMK_EXPAND(MMK_COND_VOID( \ | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:604:54: note: in expansion of macro ‘MMK_EXPAND’ 604 | # define MMK_COND_VOID(Macro, Params1, Params2, ...) MMK_EXPAND(MMK_VOID_SELECT(Macro, Params1, Params2, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:597:57: note: in expansion of macro ‘MMK_EXPAND’ 597 | # define MMK_VOID_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VOID_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VOID_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:599:42: note: in expansion of macro ‘MMK_EXPAND’ 599 | # define MMK_VOID_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:600:42: note: in expansion of macro ‘MMK_EXPAND’ 600 | # define MMK_VOID_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:601:60: note: in expansion of macro ‘MMK_EXPAND’ 601 | # define MMK_VOID_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:345:13: note: in expansion of macro ‘MMK_EXPAND’ 345 | MMK_EXPAND(MMK_APPLY_N(MMK_TRYMATCH, Id, __VA_ARGS__)) \ | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:164:27: note: in expansion of macro ‘MMK_EXPAND’ 164 | # define MMK_APPLY_N(...) MMK_EXPAND(MMK_APPLY_N_SELECT(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:157:49: note: in expansion of macro ‘MMK_EXPAND’ 157 | # define MMK_APPLY_N_SELECT(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER(MMK_VA_TAIL_SELECT(__VA_ARGS__), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:159:45: note: in expansion of macro ‘MMK_EXPAND’ 159 | # define MMK_APPLY_N_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:160:45: note: in expansion of macro ‘MMK_EXPAND’ 160 | # define MMK_APPLY_N_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:162:58: note: in expansion of macro ‘MMK_EXPAND’ 162 | # define MMK_APPLY_N_SELECT_HELPER_2(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_NE(Macro, Prefix, MMK_VA_TAIL(__VA_ARGS__))) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:155:45: note: in expansion of macro ‘MMK_EXPAND’ 155 | # define MMK_APPLY_N_NE(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_(Macro, MMK_VA_NARGS(,__VA_ARGS__), Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:154:46: note: in expansion of macro ‘MMK_EXPAND’ 154 | # define MMK_APPLY_N_(Macro, n, Prefix, ...) MMK_EXPAND(MMK_APPLY_N__(Macro, Prefix, n, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:153:47: note: in expansion of macro ‘MMK_EXPAND’ 153 | # define MMK_APPLY_N__(Macro, Prefix, n, ...) MMK_EXPAND(MMK_APPLY_N##n(0, Macro, Prefix, __VA_ARGS__,)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:92:76: note: in expansion of macro ‘MMK_EXPAND’ 92 | # define MMK_APPLY_N6(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N5 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:104:35: note: in expansion of macro ‘MMK_EXPAND’ 104 | # define MMK_TRYMATCH(N, Name, T) MMK_EXPAND(MMK_TRYMATCH_(N, Name, T)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:617:52: note: in expansion of macro ‘MMK_EXPAND’ 617 | # define MMK_COND_VA(Macro, Params1, Params2, Tok) MMK_EXPAND(MMK_VA_SELECT(Macro, Params1, Params2, Tok)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:610:55: note: in expansion of macro ‘MMK_EXPAND’ 610 | # define MMK_VA_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VA_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VA_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:612:40: note: in expansion of macro ‘MMK_EXPAND’ 612 | # define MMK_VA_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:613:40: note: in expansion of macro ‘MMK_EXPAND’ 613 | # define MMK_VA_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:614:58: note: in expansion of macro ‘MMK_EXPAND’ 614 | # define MMK_VA_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:99:5: note: in expansion of macro ‘MMK_EXPAND’ 99 | MMK_EXPAND(MMK_TRYMATCH_VA_ ## Id (__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:99:16: note: in expansion of macro ‘MMK_TRYMATCH_VA_WITHOUT’ 99 | MMK_EXPAND(MMK_TRYMATCH_VA_ ## Id (__VA_ARGS__)) | ^~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:614:69: note: in expansion of macro ‘MMK_TRYMATCH_VA’ 614 | # define MMK_VA_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:613:51: note: in expansion of macro ‘MMK_VA_SELECT_HELPER_1’ 613 | # define MMK_VA_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:612:51: note: in expansion of macro ‘MMK_VA_SELECT_HELPER_’ 612 | # define MMK_VA_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:610:66: note: in expansion of macro ‘MMK_VA_SELECT_HELPER’ 610 | # define MMK_VA_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VA_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VA_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:617:63: note: in expansion of macro ‘MMK_VA_SELECT’ 617 | # define MMK_COND_VA(Macro, Params1, Params2, Tok) MMK_EXPAND(MMK_VA_SELECT(Macro, Params1, Params2, Tok)) | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:103:5: note: in expansion of macro ‘MMK_COND_VA’ 103 | MMK_COND_VA(MMK_TRYMATCH_VA, (WITHOUT, N, Name, T,), (WITH,), T) | ^~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:104:46: note: in expansion of macro ‘MMK_TRYMATCH_’ 104 | # define MMK_TRYMATCH(N, Name, T) MMK_EXPAND(MMK_TRYMATCH_(N, Name, T)) | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:91:53: note: in expansion of macro ‘MMK_TRYMATCH’ 91 | # define MMK_APPLY_N5(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N4 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:92:87: note: in expansion of macro ‘MMK_APPLY_N5’ 92 | # define MMK_APPLY_N6(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N5 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:153:58: note: in expansion of macro ‘MMK_APPLY_N6’ 153 | # define MMK_APPLY_N__(Macro, Prefix, n, ...) MMK_EXPAND(MMK_APPLY_N##n(0, Macro, Prefix, __VA_ARGS__,)) | ^~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:154:57: note: in expansion of macro ‘MMK_APPLY_N__’ 154 | # define MMK_APPLY_N_(Macro, n, Prefix, ...) MMK_EXPAND(MMK_APPLY_N__(Macro, Prefix, n, __VA_ARGS__)) | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:155:56: note: in expansion of macro ‘MMK_APPLY_N_’ 155 | # define MMK_APPLY_N_NE(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_(Macro, MMK_VA_NARGS(,__VA_ARGS__), Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:162:69: note: in expansion of macro ‘MMK_APPLY_N_NE’ 162 | # define MMK_APPLY_N_SELECT_HELPER_2(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_NE(Macro, Prefix, MMK_VA_TAIL(__VA_ARGS__))) | ^~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:160:56: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER_2’ 160 | # define MMK_APPLY_N_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:159:56: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER_’ 159 | # define MMK_APPLY_N_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:157:60: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER’ 157 | # define MMK_APPLY_N_SELECT(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER(MMK_VA_TAIL_SELECT(__VA_ARGS__), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:164:38: note: in expansion of macro ‘MMK_APPLY_N_SELEC ’ 164 | # define MMK_APPLY_N(...) MMK_EXPAND(MMK_APPLY_N_SELECT(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:345:24: note: in expansion of macro ‘MMK_APPLY_N’ 345 | MMK_EXPAND(MMK_APPLY_N(MMK_TRYMATCH, Id, __VA_ARGS__)) \ | ^~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:601:71: note: in expansion of macro ‘MMK_MOCK_DEFINE’ 601 | # define MMK_VOID_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:600:53: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER_1’ 600 | # define MMK_VOID_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:599:53: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER_’ 599 | # define MMK_VOID_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:597:68: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER’ 597 | # define MMK_VOID_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VOID_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VOID_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:604:65: note: in expansion of macro ‘MMK_VOID_SELECT’ 604 | # define MMK_COND_VOID(Macro, Params1, Params2, ...) MMK_EXPAND(MMK_VOID_SELECT(Macro, Params1, Params2, __VA_ARGS__)) | ^~~~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:416:16: note: in expansion of macro ‘MMK_COND_VOID’ 416 | MMK_EXPAND(MMK_COND_VOID( \ | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:407:16: note: in expansion of macro ‘MMK_MOCK_DEFINE_IMPL’ 407 | MMK_EXPAND(MMK_MOCK_DEFINE_IMPL(Id, \ | ^~~~~~~~~~~~~~~~~~~~ ~/Mimick/sample/strdup/test.c:43:1: note: in expansion of macro ‘mmk_mock_define’ 43 | mmk_mock_define( | ^~~~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:118:28: error: ISO C forbids ordered comparisons of pointers to functions [-Werror=pedantic] 118 | if (param ## N > bind->params.param ## N \ | ^ ~/Mimick/include/mimick/preprocess.h:40:24: note: in definition of macro ‘MMK_EXPAND’ 40 | # define MMK_EXPAND(x) x | ^ ~/Mimick/include/mimick/mock.h:416:5: note: in expansion of macro ‘MMK_EXPAND’ 416 | MMK_EXPAND(MMK_COND_VOID( \ | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:604:54: note: in expansion of macro ‘MMK_EXPAND’ 604 | # define MMK_COND_VOID(Macro, Params1, Params2, ...) MMK_EXPAND(MMK_VOID_SELECT(Macro, Params1, Params2, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:597:57: note: in expansion of macro ‘MMK_EXPAND’ 597 | # define MMK_VOID_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VOID_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VOID_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:599:42: note: in expansion of macro ‘MMK_EXPAND’ 599 | # define MMK_VOID_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:600:42: note: in expansion of macro ‘MMK_EXPAND’ 600 | # define MMK_VOID_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:601:60: note: in expansion of macro ‘MMK_EXPAND’ 601 | # define MMK_VOID_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:345:13: note: in expansion of macro ‘MMK_EXPAND’ 345 | MMK_EXPAND(MMK_APPLY_N(MMK_TRYMATCH, Id, __VA_ARGS__)) \ | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:164:27: note: in expansion of macro ‘MMK_EXPAND’ 164 | # define MMK_APPLY_N(...) MMK_EXPAND(MMK_APPLY_N_SELECT(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:157:49: note: in expansion of macro ‘MMK_EXPAND’ 157 | # define MMK_APPLY_N_SELECT(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER(MMK_VA_TAIL_SELECT(__VA_ARGS__), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:159:45: note: in expansion of macro ‘MMK_EXPAND’ 159 | # define MMK_APPLY_N_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:160:45: note: in expansion of macro ‘MMK_EXPAND’ 160 | # define MMK_APPLY_N_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:162:58: note: in expansion of macro ‘MMK_EXPAND’ 162 | # define MMK_APPLY_N_SELECT_HELPER_2(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_NE(Macro, Prefix, MMK_VA_TAIL(__VA_ARGS__))) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:155:45: note: in expansion of macro ‘MMK_EXPAND’ 155 | # define MMK_APPLY_N_NE(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_(Macro, MMK_VA_NARGS(,__VA_ARGS__), Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:154:46: note: in expansion of macro ‘MMK_EXPAND’ 154 | # define MMK_APPLY_N_(Macro, n, Prefix, ...) MMK_EXPAND(MMK_APPLY_N__(Macro, Prefix, n, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:153:47: note: in expansion of macro ‘MMK_EXPAND’ 153 | # define MMK_APPLY_N__(Macro, Prefix, n, ...) MMK_EXPAND(MMK_APPLY_N##n(0, Macro, Prefix, __VA_ARGS__,)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:92:76: note: in expansion of macro ‘MMK_EXPAND’ 92 | # define MMK_APPLY_N6(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N5 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:104:35: note: in expansion of macro ‘MMK_EXPAND’ 104 | # define MMK_TRYMATCH(N, Name, T) MMK_EXPAND(MMK_TRYMATCH_(N, Name, T)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:617:52: note: in expansion of macro ‘MMK_EXPAND’ 617 | # define MMK_COND_VA(Macro, Params1, Params2, Tok) MMK_EXPAND(MMK_VA_SELECT(Macro, Params1, Params2, Tok)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:610:55: note: in expansion of macro ‘MMK_EXPAND’ 610 | # define MMK_VA_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VA_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VA_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:612:40: note: in expansion of macro ‘MMK_EXPAND’ 612 | # define MMK_VA_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:613:40: note: in expansion of macro ‘MMK_EXPAND’ 613 | # define MMK_VA_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:614:58: note: in expansion of macro ‘MMK_EXPAND’ 614 | # define MMK_VA_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:99:5: note: in expansion of macro ‘MMK_EXPAND’ 99 | MMK_EXPAND(MMK_TRYMATCH_VA_ ## Id (__VA_ARGS__)) | ^~~~~~~~~~ ~/Mimick/include/mimick/mock.h:99:16: note: in expansion of macro ‘MMK_TRYMATCH_VA_WITHOUT’ 99 | MMK_EXPAND(MMK_TRYMATCH_VA_ ## Id (__VA_ARGS__)) | ^~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:614:69: note: in expansion of macro ‘MMK_TRYMATCH_VA’ 614 | # define MMK_VA_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:613:51: note: in expansion of macro ‘MMK_VA_SELECT_HELPER_1’ 613 | # define MMK_VA_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:612:51: note: in expansion of macro ‘MMK_VA_SELECT_HELPER_’ 612 | # define MMK_VA_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VA_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:610:66: note: in expansion of macro ‘MMK_VA_SELECT_HELPER’ 610 | # define MMK_VA_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VA_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VA_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:617:63: note: in expansion of macro ‘MMK_VA_SELECT’ 617 | # define MMK_COND_VA(Macro, Params1, Params2, Tok) MMK_EXPAND(MMK_VA_SELECT(Macro, Params1, Params2, Tok)) | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:103:5: note: in expansion of macro ‘MMK_COND_VA’ 103 | MMK_COND_VA(MMK_TRYMATCH_VA, (WITHOUT, N, Name, T,), (WITH,), T) | ^~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:104:46: note: in expansion of macro ‘MMK_TRYMATCH_’ 104 | # define MMK_TRYMATCH(N, Name, T) MMK_EXPAND(MMK_TRYMATCH_(N, Name, T)) | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:91:53: note: in expansion of macro ‘MMK_TRYMATCH’ 91 | # define MMK_APPLY_N5(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N4 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:92:87: note: in expansion of macro ‘MMK_APPLY_N5’ 92 | # define MMK_APPLY_N6(N, Macro, Prefix, Head, ...) Macro(N, Prefix, Head) MMK_EXPAND(MMK_APPLY_N5 (MMK_INC(N), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:153:58: note: in expansion of macro ‘MMK_APPLY_N6’ 153 | # define MMK_APPLY_N__(Macro, Prefix, n, ...) MMK_EXPAND(MMK_APPLY_N##n(0, Macro, Prefix, __VA_ARGS__,)) | ^~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:154:57: note: in expansion of macro ‘MMK_APPLY_N__’ 154 | # define MMK_APPLY_N_(Macro, n, Prefix, ...) MMK_EXPAND(MMK_APPLY_N__(Macro, Prefix, n, __VA_ARGS__)) | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:155:56: note: in expansion of macro ‘MMK_APPLY_N_’ 155 | # define MMK_APPLY_N_NE(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_(Macro, MMK_VA_NARGS(,__VA_ARGS__), Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:162:69: note: in expansion of macro ‘MMK_APPLY_N_NE’ 162 | # define MMK_APPLY_N_SELECT_HELPER_2(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_NE(Macro, Prefix, MMK_VA_TAIL(__VA_ARGS__))) | ^~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:160:56: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER_2’ 160 | # define MMK_APPLY_N_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:159:56: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER_’ 159 | # define MMK_APPLY_N_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:157:60: note: in expansion of macro ‘MMK_APPLY_N_SELECT_HELPER’ 157 | # define MMK_APPLY_N_SELECT(Macro, Prefix, ...) MMK_EXPAND(MMK_APPLY_N_SELECT_HELPER(MMK_VA_TAIL_SELECT(__VA_ARGS__), Macro, Prefix, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:164:38: note: in expansion of macro ‘MMK_APPLY_N_SELEC ’ 164 | # define MMK_APPLY_N(...) MMK_EXPAND(MMK_APPLY_N_SELECT(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:345:24: note: in expansion of macro ‘MMK_APPLY_N’ 345 | MMK_EXPAND(MMK_APPLY_N(MMK_TRYMATCH, Id, __VA_ARGS__)) \ | ^~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:601:71: note: in expansion of macro ‘MMK_MOCK_DEFINE’ 601 | # define MMK_VOID_SELECT_HELPER_1(Macro, Params1, Params2) MMK_EXPAND(Macro Params1) | ^~~~~ ~/Mimick/include/mimick/preprocess.h:600:53: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER_1’ 600 | # define MMK_VOID_SELECT_HELPER_(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_##N(__VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:599:53: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER_’ 599 | # define MMK_VOID_SELECT_HELPER(N, ...) MMK_EXPAND(MMK_VOID_SELECT_HELPER_(N, __VA_ARGS__)) | ^~~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:597:68: note: in expansion of macro ‘MMK_VOID_SELECT_HELPER’ 597 | # define MMK_VOID_SELECT(Macro, Params1, Params2, Type) MMK_EXPAND(MMK_VOID_SELECT_HELPER(MMK_VA_TAIL_SELECT(MMK_VOID_SELECT_TYPE(Type)), Macro, Params1, Params2)) | ^~~~~~~~~~~~~~~~~~~~~~ ~/Mimick/include/mimick/preprocess.h:604:65: note: in expansion of macro ‘MMK_VOID_SELECT’ 604 | # define MMK_COND_VOID(Macro, Params1, Params2, ...) MMK_EXPAND(MMK_VOID_SELECT(Macro, Params1, Params2, __VA_ARGS__)) | ^~~~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:416:16: note: in expansion of macro ‘MMK_COND_VOID’ 416 | MMK_EXPAND(MMK_COND_VOID( \ | ^~~~~~~~~~~~~ ~/Mimick/include/mimick/mock.h:407:16: note: in expansion of macro ‘MMK_MOCK_DEFINE_IMPL’ 407 | MMK_EXPAND(MMK_MOCK_DEFINE_IMPL(Id, \ | ^~~~~~~~~~~~~~~~~~~~ ~/Mimick/sample/strdup/test.c:43:1: note: in expansion of macro ‘mmk_mock_define’ 43 | mmk_mock_define( | ^~~~~~~~~~~~~~~ cc1: all warnings being treated as errors make[2]: *** [sample/strdup/CMakeFiles/strdup_test.dir/build.make:82: sample/strdup/CMakeFiles/strdup_test.dir/test.c.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:291: sample/strdup/CMakeFiles/strdup_test.dir/all] Error 2 make: *** [Makefile:160: all] Error 2
The text was updated successfully, but these errors were encountered:
Define mmk_noreturn if __STDC_VERSION__ >= 201112L (Snaipe#29)
60f8e4f
Signed-off-by: Christophe Bedard <[email protected]>
No branches or pull requests
Is there a way to mock functions which accept function pointers as parameters?
Results in:
The text was updated successfully, but these errors were encountered: