Hi, Please see below warning from GCC (rtools 4.0). I know that the flag "-Wconversion" is not used by default when building packages in R but I was wondering if the below warning can be avoided by changing the ISNAN function in the R C API? The functions R_IsNaN and R_IsNA do not generate these warnings but they also have a different behaviour than ISNAN.
test_ISNAN = inline::cfunction( verbose = TRUE, language = "C", cppargs = "-Wconversion", sig = c(x = "SEXP"), body = " if (ISNAN(asReal(x))) { Rprintf(\"Hello\"); } return R_NilValue; ") Setting PKG_CPPFLAGS to -Wconversion Compilation argument: C:/PROGRA~1/R/R-40~1.0/bin/x64/R CMD SHLIB filed40200e5009.c 2> filed40200e5009.c.err.txt "C:/rtools40/mingw64/bin/"gcc -I"C:/PROGRA~1/R/R-40~1.0/include" -DNDEBUG -Wconversion -O2 -Wall -std=gnu99 -mfpmath=sse -msse2 -mstackrealign -c filed40200e5009.c -o filed40200e5009.o In file included from C:/PROGRA~1/R/R-40~1.0/include/R.h:58, from filed40200e5009.c:1: filed40200e5009.c: In function 'filed40200e5009': C:/PROGRA~1/R/R-40~1.0/include/Rinternals.h:1531:18: warning: conversion from 'double' to 'float' may change value [-Wfloat-conversion] #define asReal Rf_asReal filed40200e5009.c:8:7: note: in expansion of macro 'ISNAN' if (ISNAN(asReal(x))) { ^~~~~ filed40200e5009.c:8:13: note: in expansion of macro 'asReal' if (ISNAN(asReal(x))) { ^~~~~~ C:/rtools40/mingw64/bin/gcc -shared -s -static-libgcc -o filed40200e5009.dll tmp.def filed40200e5009.o -LC:/PROGRA~1/R/R-40~1.0/bin/x64 -lR Program source: 1: #include <R.h> 2: #include <Rdefines.h> 3: #include <R_ext/Error.h> 4: 5: 6: SEXP filed40200e5009 ( SEXP x ) { 7: 8: if (ISNAN(asReal(x))) { 9: Rprintf("Hello"); 10: } 11: return R_NilValue; 12: 13: warning("your C program does not return anything!"); 14: return R_NilValue; 15: } Thank you Best regards, Morgan [[alternative HTML version deleted]] ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel