Ah, in that case Isaiah's answer is spot on. On Wed, Dec 24, 2014 at 11:59 PM, Elliot Saba <[email protected]> wrote:
> No, I think what is wanted here is an analogue to Rcpp::stop(), which looks > like it throws an R error > <http://stackoverflow.com/questions/24557711/how-to-generate-an-r-warning-safely-in-rcpp> > from > within C/C++ code. I believe the intent here is to generate > high-level-language errors from low(er)-level-language libraries. > -E > > On Wed, Dec 24, 2014 at 8:47 PM, Stefan Karpinski <[email protected]> > wrote: > >> Isn't it the opposite of that though? I.e. catching C++ assert failures? >> >> On Wed, Dec 24, 2014 at 11:46 PM, Isaiah Norton <[email protected]> >> wrote: >> >>> This might help: >>> >>> http://docs.julialang.org/en/release-0.3/manual/embedding/#throwing-julia-exceptions >>> >>> On Wed, Dec 24, 2014 at 10:41 PM, 良无 <[email protected]> wrote: >>> >>>> In C or C++ code, I have a function: >>>> >>>> void funcname(...){ >>>> ... >>>> assert(0); >>>> ... >>>> } >>>> >>>> if I run `ccall((:funcname, libpath), Void, (...), ...)` in Julia , it >>>> will terminate the Julia process. >>>> >>>> How can I replace assert() with other function to throw an error in >>>> Julia? >>>> >>>> >>>> > ccall((:funcname, libpath), Void, (...), ...) >>>> >>>> ERROR: .... >>>> >>>> I am sorry that I can not make it clear, and I just come to Julia from >>>> the R world. >>>> >>>> Thanks. ;-) >>>> >>>> I'm afraid I still don't get it. What do you want to do? >>>>> >>>>> >>>>> On Dec 24, 2014, at 8:15 PM, 良无 <[email protected]> wrote: >>>>> >>>>> If you want to release an R package to CRAN, R Core will force you to >>>>> check this by R CMD check: >>>>> >>>>> - Compiled code should never terminate the R process within which it >>>>> is running. Thus C/C++ calls to assert/abort/exit, Fortran calls to STOP >>>>> and so on must be avoided. Nor may R code call q(). >>>>> >>>>> >>>>> Le mercredi 24 décembre 2014 à 08:36 -0800, 良无 a écrit : >>>>>> > In my origin C++ code, I use assert(), but if I want to use this >>>>>> code >>>>>> > in Julia, maybe I need to replace it with other functions. In R, I >>>>>> can >>>>>> > use Rcpp::stop(). Is there any easy way to do it in Julia with C or >>>>>> C >>>>>> > ++ code. >>>>>> IIUC, you want to raise a Julia exception from C code, right? >>>>>> >>>>>> > And it seems that Julia does not have R CMD check like stuff yet. >>>>>> It >>>>>> > does not check this kind of issue. >>>>>> You mean, running a test suite? See >>>>>> http://docs.julialang.org/en/latest/stdlib/test/ >>>>>> >>>>>> and how most packages do this, for example >>>>>> https://github.com/JuliaStats/StatsBase.jl/tree/master/test >>>>>> >>>>>> >>>>>> Regards >>>>>> >>>>> >>> >> >
