how to check callback prototypes?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



when I pass a function with a wrong signature as a callback, I get just
a warning from gcc, so the compile succeeds and the test is wrong:

AC_CACHE_CHECK([whether DB_ENV->set_errcall() accepts DBE],
ac_cv_dbe_set_errcall_accept_dbe,[
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <db.h>
void my_callback (const DB_ENV* dbe, const char *errpfx, const char *msg) {}],
[[DB_ENV dbe; dbe.set_errcall(&dbe,&my_callback);]])],
ac_cv_dbe_set_errcall_accept_dbe=yes,ac_cv_dbe_set_errcall_accept_dbe=no)])
if test "$ac_cv_dbe_set_errcall_accept_dbe" = "yes"; then
AC_DEFINE(HAVE_DBE_SET_ERRCALL_ACCEPT_DBE,1,
[Define to 1 if DB_ENV->set_errcall() accepts DBE])
fi

configure:4658: checking whether DB_ENV->set_errcall() accepts DBE
configure:4681: gcc -c -g -O2  conftest.c >&5
conftest.c: In function `main':
conftest.c:32: warning: passing arg 2 of pointer to function from incompatible pointer type
configure:4687: $? = 0
configure:4691: test -z
                         || test ! -s conftest.err
configure:4694: $? = 0
configure:4697: test -s conftest.o
configure:4700: $? = 0
configure:4711: result: yes

I want it to be error because I cannot pass
void my_callback (const DB_ENV* dbe, const char *errpfx, const char *msg);
instead of
void my_callback (const char *errpfx, char *msg);

so: how do I turn the warning into a failed compilation?
(the result: above should be "no", not "yes")

thanks!

-- 
Sam Steingold (http://www.podval.org/~sds) running w2k
<http://www.palestinefacts.org/> <http://www.iris.org.il>
<http://www.mideasttruth.com/> <http://ffii.org/> <http://www.memri.org/>
Life is like a diaper -- short and loaded.



_______________________________________________
Autoconf mailing list
Autoconf@xxxxxxx
http://lists.gnu.org/mailman/listinfo/autoconf

[Index of Archives]     [GCC Help]     [Kernel Discussion]     [RPM Discussion]     [Red Hat Development]     [Yosemite News]     [Linux USB]     [Samba]

  Powered by Linux