草庐IT

JNI_ASSERT

全部标签

c++ - 在 Xcode [c++] 中的 assert (assert.h) 中定义 lambda 时,为类似函数的宏调用编译错误提供了太多参数

我正在使用assert.h中的断言宏我已经定义了lambda来执行断言检查。intval1=0;intval2=1;constautocheck=[val1,val2]()->bool{returnval1bool{returnval1//compileerrorforthiscall"toomanyargumentsprovidedtofunction-likemacroinvocation"assert([val1,val2]()->bool{returnval1为什么会这样toomanyargumentsprovidedtofunction-likemacroinvocation

c++ - 将 CRTP 与 static_assert 一起使用时出现编译器错误

考虑以下代码:templatestructBase{staticconstexprintx_base=Derived::x_derived;//static_assert(x_base>1,"Oops");};structDerived:publicBase{staticconstexprintx_derived=5;};Baseobj;这在gcc上编译得很好,但如果我取消注释static_assert行,它会提示error:incompletetype'Derived'usedinnestednamespecifierstaticconstexprintx_base=Derived:

java - 从 Java 到 C++ JNI 获取字符串数组

美好的一天,我正在尝试使用JNI将Java字符串数组复制到C++数组。我已经试过了,但似乎没有用。char*myarray;JNIEXPORTvoidJNICALLJava_com_Example_accessArray(JNIEnv*env,jobjectobj,jobjectArraystringArrays){intsize;size=env->GetArrayLength(stringArrays);myarray=env->GetCharArrayRegion(stringArrays,0,size,null);}myarray中的值是否与传递的Java数组中的值相同?或者如

Java JNI - 将 C 中分配的资源与 java 对象相关联?

我想在C中分配一些内存并保持它与java对象实例相关联,如下所示:voidconfigure(JNIEnv*object,jobjectobj,....){char*buf=newchar[1024];//associatedwithsomehow}然后在java对象被垃圾回收时释放内存-我可以通过从java对象的finalize()方法调用JNI函数来做到这一点。问题是,如何将C指针与java对象相关联?在对象中保留一个long字段并将指针转换为long?有没有更好的办法? 最佳答案 一般来说,如果要将指针从C传输到Java,建议

c++ - 如何在 Visual Studio 2013 的 Debug模式下关闭 ASSERT

有什么方法可以关闭断言而不是切换到Release模式。我需要调试经常进行断言的代码,这会减慢我的工作速度。这些断言与我要解决的问题无关,所以现在它们只会减慢我的进度,因为它们在我的一个基类中经常被调用。现在我没有时间改进他们的设计,所以有人可以告诉我是否有办法在Debug模式下关闭断言并使用它的功能。 最佳答案 用户_CrtSetReportModeintiPrev=_CrtSetReportMode(_CRT_ASSERT,0);//StartOperationwithnoASSERTs...//Restorepreviousmo

c++ - static_assert 和英特尔 C++ 编译器

阅读cppreference.com:Astaticassertdeclarationmayappearatblockscope(asablockdeclaration)andinsideaclassbody(asamemberdeclaration)好的,现在我有以下代码:structfoo_t{staticconstexprstd::size_tmaxAlignment(){//Thisisjustasample;Iremovedrealcodefromthismethod.returnstd::max(alignof(__m128),__alignof(__m256));}sta

c++ - static_assert 无法将 const char* 模板参数识别为 constexpr : g++ bug?

考虑以下定义。charright_string[]="::right_one.";charwrong_string[]="::wrong_one.";templatevoidf(){static_assert(str==::right_string,"Passme::right_string!");}structTest{staticconstexprcharright_string[]="template_struct::right_one";staticconstexprcharwrong_string[]="template_struct::wrong_one";template

c++ - 仅在实例化时使用 `static_assert` 使类模板特化无法编译的安全、符合标准的方法?

假设我们想要制作一个模板类,它只能用数字实例化,否则不能编译。我的尝试:#includetemplatestructOnlyNumbers{public:structC{};static_assert(std::is_same::value,"Tisnotarithmetictype.");//OnlyNumbers*ptr;};templatestructOnlyNumbers>>{};structFoo{};intmain(){OnlyNumbers{};//Compiles//OnlyNumbers{};//Error}Livedemo-所有三个主要编译器似乎都按预期工作。我知道

android - 在 android 上使用 JNI 进行图像解码和操作

背景在某些应用程序中,重要的是在没有OOM的情况下快速处理大图像。为此,JNI(或渲染脚本,遗憾的是缺少文档)可能是一个不错的解决方案。过去,我曾成功地使用JNI旋转巨大的位图,同时避免了OOM(链接here、here和here)。这是一次不错的(但令人讨厌的)体验,但最终它奏效了。问题android框架有很多处理位图的函数,但是我不知道JNI端是什么情况。我已经知道如何将位图从android的“java世界”传递到“JNI世界”并返回。我不知道我可以在JNI端使用哪些函数来帮助我处理位图。我希望能够在JNI上做所有的图像操作(包括解码),这样我就不用担心大图像呈现时的OOM,并且在这

c++ - 为什么 `assert` 宏即使与 `NDEBUG` 也有值(value)?

环境:$g++--versiong++(Ubuntu7.4.0-1ubuntu1~18.04)7.4.0众所周知,在包含assert.h之前定义的NDEBUG可以禁用用于调试的类函数宏assert(卡塞特)。但是,在我的环境中阅读/usr/include/assert.h,我发现了下面的代码。#ifdefined__cplusplus&&__GNUC_PREREQ(2,95)#define__ASSERT_VOID_CASTstatic_cast#else#define__ASSERT_VOID_CAST(void)#endif#ifdefNDEBUG#defineassert(exp