草庐IT

c++ - std::runtime_error 子类的 "call to deleted constructor of"编译器错误

我从std::runtime_error派生了一个异常类,以便添加对异常流的支持。我收到一个奇怪的编译器错误输出,我不确定如何解决?clang++-std=c++11-stdlib=libc++-g-Wall-I../-I/usr/local/includeMain.cpp-cMain.cpp:43:19:error:calltodeletedconstructorof'EarthException'throwEarthException(__FILE__,__LINE__)^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~../EarthExce

c++ - 如果繁重的计算函数位于循环的条件部分,运行时间是否会有所不同?

如果在循环的条件部分进行繁重的计算,运行时间是否会有所不同?例如:inti,n;for(i=1;i或者inti,n,foo;foo=[calltosomecomplexfunctiononn];for(i=1;i哪个更有效率?循环是计算一次还是每次迭代都计算一次? 最佳答案 是的,for循环的条件部分中提供的函数会有“性能损失”除非函数是const并且编译器可以将其缩减到一个常数值。编译器需要为每次迭代调用该函数。我强烈建议在进入循环之前将函数的结果放入常量临时变量中。例子:constunsignedintlimit=my_vect

c++ - 在没有运行时的情况下构建 Windows C++ 库?

我正在尝试创建一个用于Windows/MSVC的C++库。我的问题是,为了正确链接,我需要分发一堆不同的版本,链接到不同版本的MSVC的c++运行时-单线程和多线程,调试和发布,不同的编译器版本,各种其他安全和其他选项。我很乐意只分发两个,32位和64位。我的想法是可能对我所有的STL类型使用不同的新运算符(比如mynew)和自定义分配器。创建库时,/nodefaultlib。然后,当从父项目链接进来时,要求他们将mynew转换为new,并将mySTL分配器转换为标准分配器(或他们选择的分配器之一)。我想我需要删除和其他一些功能。自然地,我会提供一个使用库的thunking实现示例,但

c++ - Visual Studio : How to specify different runtime libraries for the linker?(/MTd、MDd 等)

我正在链接到VS2008中的几个库。如果我对链接器的了解是正确的,MTd用于静态链接而MDd用于动态链接(到DLL)。我的目标是静态链接一些库和动态链接其他库。项目选项似乎只有一个设置适用于链接器输入中的所有库。我该怎么做? 最佳答案 在您设置项目后,您的项目将获得一个合理的C运行时库默认值,具体取决于您如何回答新建项目向导的提示。您可以按如下方式检查和更改(如果需要):在解决方案资源管理器中右键单击相关项目,选择属性查看配置属性、C/C++、代码生成、运行时库。您可以根据需要链接其他库,您只需在“链接器”、“输入”、“附加依赖项”

c++ - 在运行时再次出现 "undefined symbol",C++

我有一个数据类型,我可以实例化该类型的变量。像这样:FetchAddrfaddr(VirtualMemoryAddress(0x0a));FetchAdr的定义是:structFetchAddr{VirtualMemoryAddresstheAddress;FetchAddr(VirtualMemoryAddressanAddress):theAddress(anAddress){}};现在我有一个faddr是私有(private)(或公共(public))变量的类classFLEXUS_COMPONENT(BPred){staticFetchAddrfaddr;public:FLEX

力扣报错runtime error: load of null pointer of type ‘int‘解决思路

记录本算法小白刷力扣的这道题遇到的报错349.两个数组的交集https://leetcode.cn/problems/intersection-of-two-arrays/出现报错的代码 /***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/int*intersection(int*nums1,intnums1Size,int*nums2,intnums2Size,int*returnSize){inthash[1000]={0};intresult[1000];//交集是去重的,最多只有1000个数for(inti

c++ - 带 static_assert() 的逗号运算符

当尝试使用static_assert作为参数来计算逗号运算符时编译失败voidfvoid(){}intmain(){inta=(1,2);//a=2intb=(fvoid(),3);//b=3intd=(,5);//^//error:expectedprimary-expressionbefore','token.OKintc=(static_assert(true),4);//^~~~~~~~~~~~~//error:expectedprimary-expressionbefore'static_assert'.Why?}看起来static_assert()在编译后甚至没有解析为vo

c++ - Visual Studio 2008,运行时库使用建议

我想要一些有关VisualStudio2008运行时库的信息。最具体的是什么时候应该考虑DLL版本以及什么时候应该考虑静态版本。VisualStudio文档描述了DLL依赖项和链接库方面的技术差异。但是我想知道为什么我要使用一个而不是另一个。更重要的是,为什么我要使用多线程DLL运行时,因为这显然会迫使我的应用程序依赖DLL,而静态运行时对我的应用程序用户机器没有这样的要求。 最佳答案 由于DLL依赖性,动态链接到运行时库会使部署稍微复杂化,但也允许您的应用程序利用对MS运行时库的更新(错误修复或更可能的性能改进)而无需重新编译。静

C++0x random_device 'std::runtime_error'

我是C++初学者,我对C++0x随机数生成器有疑问。我想使用Mersennetwister引擎来生成随机int64_t数字,并且我使用我之前找到的一些信息编写了一个函数:#include#includeint64_tMyRandomClass::generateInt64_t(int64_tminValue,int64_tmaxValue){std::random_devicerd;std::default_random_enginee(rd());unsignedchararr[8];for(unsignedinti=0;i(arr[0])|static_cast(arr[1])(a

c++ - 标准异常邀请不安全使用?

建议您总是抛出从std::exception派生的东西,并且有一些预定义的特化,例如std::runtime_errorstd::exception的接口(interface)是根据非抛出访问器给出的。伟大的。现在查看std::runtime_error的构造函数classruntime_error:publicexception{public:explicitruntime_error(conststring&);};所以如果我这样做try{foo();}catch(...){throwstd::runtime_error("bang");}foo完全有可能因为内存不足而抛出,在这种