Yes, R defines `Free` here:
https://github.com/wch/r-source/blob/trunk/src/include/R_ext/RS.h#L74
```
==> R CMD INSTALL --preclean --no-multiarch --with-keep.source r
* installing to library
‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library’
* installing *source* package ‘arrow’ ...
Found pkg-config cflags and libs!
PKG_CFLAGS=-DNDEBUG -I/usr/local/include
PKG_LIBS=-L/usr/local/lib -larrow
** libs
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include"
-DNDEBUG -DNDEBUG -I/usr/local/include
-I"/Library/Frameworks/R.framework/Versions/3.5/Resources/library/Rcpp/include"
-I/usr/local/include -fPIC -Wno-unused-result -O3 -c RcppExports.cpp -o
RcppExports.o
clang++ -std=gnu++11 -I"/Library/Frameworks/R.framework/Resources/include"
-DNDEBUG -DNDEBUG -I/usr/local/include
-I"/Library/Frameworks/R.framework/Versions/3.5/Resources/library/Rcpp/include"
-I/usr/local/include -fPIC -Wno-unused-result -O3 -c hello.cpp -o hello.o
In file included from hello.cpp:19:
In file included from ./r_arrow_types.h:22:
In file included from /usr/local/include/arrow/api.h:23:
In file included from /usr/local/include/arrow/array.h:28:
In file included from /usr/local/include/arrow/buffer.h:28:
/usr/local/include/arrow/memory_pool.h:55:38: error: too many arguments
provided to function-like macro invocation
virtual void Free(uint8_t* buffer, int64_t size) = 0;
^
/Library/Frameworks/R.framework/Resources/include/R_ext/RS.h:74:9: note: macro
'Free' defined here
#define Free(p) (R_chk_free( (void *)(p) ), (p) = NULL)
^
In file included from hello.cpp:19:
In file included from ./r_arrow_types.h:22:
In file included from /usr/local/include/arrow/api.h:23:
In file included from /usr/local/include/arrow/array.h:28:
In file included from /usr/local/include/arrow/buffer.h:28:
/usr/local/include/arrow/memory_pool.h:55:3: error: 'virtual' can only appear
on non-static member functions
virtual void Free(uint8_t* buffer, int64_t size) = 0;
^
/usr/local/include/arrow/memory_pool.h:55:16: error: field has incomplete type
'void'
virtual void Free(uint8_t* buffer, int64_t size) = 0;
^
/usr/local/include/arrow/memory_pool.h:79:30: error: too many arguments
provided to function-like macro invocation
void Free(uint8_t* buffer, int64_t size) override;
^
/Library/Frameworks/R.framework/Resources/include/R_ext/RS.h:74:9: note: macro
'Free' defined here
#define Free(p) (R_chk_free( (void *)(p) ), (p) = NULL)
^
In file included from hello.cpp:19:
In file included from ./r_arrow_types.h:22:
In file included from /usr/local/include/arrow/api.h:23:
In file included from /usr/local/include/arrow/array.h:28:
In file included from /usr/local/include/arrow/buffer.h:28:
/usr/local/include/arrow/memory_pool.h:79:8: error: field has incomplete type
'void'
void Free(uint8_t* buffer, int64_t size) override;
^
/usr/local/include/arrow/memory_pool.h:101:30: error: too many arguments
provided to function-like macro invocation
void Free(uint8_t* buffer, int64_t size) override;
^
/Library/Frameworks/R.framework/Resources/include/R_ext/RS.h:74:9: note: macro
'Free' defined here
#define Free(p) (R_chk_free( (void *)(p) ), (p) = NULL)
^
In file included from hello.cpp:19:
In file included from ./r_arrow_types.h:22:
In file included from /usr/local/include/arrow/api.h:23:
In file included from /usr/local/include/arrow/array.h:28:
In file included from /usr/local/include/arrow/buffer.h:28:
/usr/local/include/arrow/memory_pool.h:101:8: error: field has incomplete type
'void'
void Free(uint8_t* buffer, int64_t size) override;
^
7 errors generated.
make: *** [hello.o] Error 1
ERROR: compilation failed for package ‘arrow’
* removing
‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library/arrow’
* restoring previous
‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library/arrow’
```
It looks like an alternative is to define `STRICT_R_HEADERS` so that it does
not define `Free` as a macro.
```cpp
#define STRICT_R_HEADERS
#include <Rcpp.h>
#include <arrow/api.h>
```
[ Full content available at: https://github.com/apache/arrow/pull/2489 ]
This message was relayed via gitbox.apache.org for [email protected]