草庐IT

JNI_ASSERT

全部标签

c++ - 宏 `assert`会在C++20中被移除吗?

根据cppreference,assert将用作C++属性。但是,已经有大量项目严重依赖宏assert,有什么不好的影响吗? 最佳答案 没有。提案p0542r5其中介绍了C++20契约说:Notethatwhileassert(expression)wouldexpandasafunction-likemacrowiththeappropriateheader,assert:isnotafunction-likeinvocation,sodoesnotexpand. 关于c++-宏`as

c++ - Assert() - 它有什么用?

我不明白assert()的用途。我的讲师说assert的目的是发现错误。例如:doubledivide(inta,intb){assert(0!=b);returna/b;}以上断言是否合理?我认为答案是肯定的,因为如果我的程序不应该与0(数字零)一起使用,但不知何故零确实进入了b变量,然后代码出了问题。我说得对吗?你能给我一些关于justifiedassert()的例子吗?问候 最佳答案 assert用于验证如果程序正确。assert在您的示例中是否合理取决于divide的规范:如果b!=0是前提条件,那么assert通常是验证它

java - JNI 调用返回对象的 Java 函数导致 NoSuchMethodError

我有一个Java函数,它返回一个类的单例实例publicstaticsynchronizedMyClassgetInstance()throwsMyClassException{if(instance==NULL){//create}returninstance;}我想通过C++代码调用它,但是当我这样做时,它返回了一个NoSuchMethodError。cls=jenv->FindClass("MyClass");if(cls==NULL){//errorhandling}mid=jenv->GetStaticMethodID(cls,"getInstance","()LMyClas

c++ - `constexpr`、 `static_assert` 和 `if constexpr(...)` 变量之间的模板中 `constexpr` lambda 的评估不一致

(使用g++7.0主干。)给定以下“类型到值包装”实用程序...templatestructtype_wrapper{usingtype=T;};//"Wraps"atypeintoa`constexpr`value.templateconstexprtype_wrappertype_c{};...我创建了以下函数来检查表达式的有效性:templateconstexprautois_valid(TF){return[](auto...ts)constexpr{returnstd::is_callable{};};}is_valid函数可以如下使用://Evaluatesto`true`

c++ - 与 static_assert 和 boost::hana 相关的 Clang 编译错误

考虑以下使用-std=c++14在Clang3.8上成功编译的问题。#includenamespacehana=boost::hana;intmain(){constexprautoindices=hana::range();hana::for_each(indices,[&](autoi){hana::for_each(indices,[&](autoj){constexprbooltest=(i==(j==i?j:i));static_assert(test,"error");});});}这个测试非常荒谬,但这不是重点。现在考虑一个替代版本,其中测试直接放在static_asse

java - JNI Stream 二进制数据从 C++ 到 Java

我需要帮助将二进制数据传递到Java。我正在尝试使用jbytearray,但是当数据进入Java时,它似乎已损坏。有人可以帮帮我吗?这是一些示例代码的片段。首先是nativeC++端:printf("Buildingaudioarraycopy\n");jbyteArrayrawAudioCopy=env->NewByteArray(10);jbytetoCopy[10];printf("Fillingaudioarraycopy\n");chartheBytes[10]={0,1,2,3,4,5,6,7,8,9};for(inti=0;iSetByteArrayRegion(rawA

java - 使用 JNI 构建 C++ Java 包装器

我目前正在为C++类编写JNI包装器,我不确定到目前为止我所做的是否是最正确的方法。据我所知,不可能声明一个Java构造函数native,所以我最后写了类似这样的东西:packagelog;publicclassLogger{privatelonginternalPtr=0;privatenativelongcreateNativeInstance(Stringapplication,Stringmodule,Stringfunction);publicLogger(Stringapplication,Stringmodule,Stringfunction){this.internal

c++ - 如何使用谷歌测试抑制由 assert() 引起的运行时错误?

我在C++项目中使用谷歌测试。一些函数使用assert()来检查无效的输入参数。我已经阅读了死亡测试(WhatareGoogleTest,DeathTests)并开始在我的测试用例中使用它们。但是,我想知道是否有一种方法可以抑制断言失败导致的运行时错误。此时,每个失败的断言都会创建一个弹出窗口,我必须在每次运行测试时关闭它。随着我的项目的增长,这种行为越来越多地以一种NotAcceptable方式扰乱工作流程,我倾向于不再测试assert()-assertions。我知道通常可以禁用断言,但从测试框架内部抑制操作系统生成的警告似乎更方便。 最佳答案

c++ - 在 Android 上使用 OpenCV 将 cv::Mat 传递给 JNI 时出错

我正在使用OpenCV和JNI开发一个Android项目。实际上我正在更改人脸检测示例。我遇到的问题是,当我传递cv::Mat引用时,它会给出一些奇怪的输出,但传递不顺利。为了让您了解情况,我在我的FdActivity.java中有这个,这是我的android应用程序的主要事件:publicMatonCameraFrame(CvCameraViewFrameinputFrame){rgb=inputFrame.rgba();Matres=mNativeDetector.process(rgb);returnres;}过程函数是这样的:publicMatprocess(Matrgb){M

c++ - 在可能的情况下扩展为 static_assert 的断言宏?

我有一些通用代码需要对成员函数的结果运行断言。此成员函数可能是constexpr,也可能不是。templatevoidfoo(Tt){assert(t.member_function()==10);}因为t.member_function()可能是一个常量表达式,我想知道是否可以将其视为static_assert这种情况,但在其他情况下默认为正常的assert。这可能吗? 最佳答案 这是一个有点疯狂的解决方案。取消注释Constc;foo(c);行,你会发现它无法编译。这是编译时断言。需要variablelengtharrays,也