如何将 C++ 库中的 exit() 替换为 Rcpp?

问题描述 投票:0回答:0

在 C++ 库 CGAL 中有以下几行:

    void            exit( Locate_type& lt, int& li, int& lj ) const
    {
      lt = prev_lt(); li = prev_li(); lj = prev_lj();
    }
    std::tuple<Locate_type, int, int> exit() const
    {
      return { prev_lt(), prev_li(), prev_lj() };
    }

为了将CGAL移植到R,RcppCGAL的作者做了如下修改:

    std::tuple<Locate_type, int, int> Rcpp::stop("Exit error") const
    {
      return { prev_lt(), prev_li(), prev_lj() };
    }

以前,这有效。但现在,CRAN 已经升级了gcc,这不再起作用了。出现此错误:

At global scope:
/data/gannet/ripley/R/test-dev/RcppCGAL/include/CGAL/Triangulation_segment_traverser_3.h:371:49: 
error: expected identifier before string constant
   371 |     std::tuple<Locate_type, int, int>Rcpp::stop("Exit Error") const
       |                                                 ^~~~~~~~~~~~
/data/gannet/ripley/R/test-dev/RcppCGAL/include/CGAL/Triangulation_segment_traverser_3.h:371:49: 
error: expected ',' or '...' before string constant
/data/gannet/ripley/R/test-dev/RcppCGAL/include/CGAL/Triangulation_segment_traverser_3.h:371:38: 
error: invalid use of '::'
   371 |     std::tuple<Locate_type, int, int>Rcpp::stop("Exit Error") const
       |                                      ^~~~

我们应该做什么?

r rcpp cgal
© www.soinside.com 2019 - 2024. All rights reserved.