rgl has a lot of C++ code which is now getting errors in the clang17 tests on CRAN:

  https://www.stats.ox.ac.uk/pub/bdr/clang17/rgl.log

I haven't looked at the whole list yet, but many of the errors arise because R's include/Rinternals.h defines a length() macro, and that conflicts with a definition in clang's library. For example,

/lib64/glib-2.0/include -I/usr/include/sysprof-4 -pthread -Iext -Iext/glad/include -isystem /usr/local/clang-trunk/include -I/usr/local/clang/include -fpic -O3 -Wall -pedantic -frtti -Wp,-D_FORTIFY_SOURCE=3 -c PlaneSet.cpp -o PlaneSet.o
 In file included from NULLgui.cpp:9:
 In file included from ./NULLgui.h:4:
 In file included from ./gui.h:9:
 In file included from ./glgui.h:8:
In file included from /usr/local/clang-trunk/bin/../include/c++/v1/vector:322: In file included from /usr/local/clang-trunk/bin/../include/c++/v1/__format/formatter_bool.h:21: In file included from /usr/local/clang-trunk/bin/../include/c++/v1/__format/formatter_integral.h:32: In file included from /usr/local/clang-trunk/bin/../include/c++/v1/locale:203: /usr/local/clang-trunk/bin/../include/c++/v1/__locale:961:34: error: too many arguments provided to function-like macro invocation 961 | int length(state_type& __st, const extern_type* __frm, const extern_type* __end, size_t __mx) const
      |                                  ^
/data/gannet/ripley/R/R-flang/include/Rinternals.h:968:9: note: macro 'length' defined here
  968 | #define length(x)               Rf_length(x)

For those R users who know C++ better than me, is there a standard way to avoid this? I can think of a couple that should work (e.g. defining R_NO_REMAP globally, or rearranging the order of includes). I'd like to use the standard one if there is such a thing.

Duncan Murdoch

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to