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]

Reply via email to