草庐IT

EXIT_CODE

全部标签

C++ 模板 : Inlined code and Compiler Optimzations

是否可以安全地假设以下代码在被编译器优化和内联时会删除评估三元运算所需的分支?或者对于大多数主流编译器来说,将下面的方法分成两个单独的方法以避免分支会更明智吗?/*!\briefthismethodreturnsthecosofanangle.Usercanspecifyifitis*indegreesorradians.*/templateTcos(constT&angle){return(AM==radians)?std::cos(angle):std::cos(degrees_to_radians(angle));} 最佳答案

c++ - c++函数中 "Unreachable code"的解释

目标是编写一个在数组中搜索值的函数。如果数组中包含该值,则返回key所在的索引。如果数组中不包含该值,则返回-1我有一个返回数组变量索引的C++函数。我需要解释为什么我的代码部分(即for循环表达式中的“i++”)被我的IDE标记为“无法访问”我已经尝试逐行调试代码,看看我是否可以破译i++无法访问的原因。我无法确定原因。但是,我怀疑这可能与我的“返回”声明有关intmain(){constintsize=4;intarray[]={345,75896,2,543};intsearchKey=543;std::cout如果数组中存在searchKey,我希望该函数返回数组的索引,但它总

c++ - 多个线程调用 exit() 时的安全静态析构函数

在多个(Posix)线程并行调用exit()的情况下,我如何安全地删除静态C++对象?它出现在我的CentOS6环境中,exit()通过调用类似fct的东西来执行atexit(或on_exit)清理处理程序[--cnt]()其中cnt是注册的处理程序数。当多个线程同时调用exit()时,我们在未protected--cnt操作中存在竞争条件,并且某些处理程序可能会被跳过或多次调用(导致到偶尔的崩溃)。那么,我如何才能确保只有一个exit()调用线程进行清理,而所有其他线程停止?请注意,将pthread_mutex_lock()插入清理处理程序没有帮助,因为可能会跳过此处理程序...不幸

c++ - 您可以在 Visual Studio Code for C++ 中重命名函数吗?

VisualStudioCode(VSC)是否具有真正的C++重命名功能?我知道我可以替换字符串,但是当我尝试重命名一个名称是另一个函数中缀的函数时,这会导致错误。此功能确实适用于VSC中的其他语言,VisualStudio2017(我之前使用过)也附带了它。我的小项目从VisualStudio迁移到VSC,因为我需要一个终端窗口,而且我更喜欢将它放在我的IDE的主窗口中。我正在使用VSC1.12.2 最佳答案 最后重命名wasimplemented在C/C++扩展版本0.26.0-insiders

单元的 C++ 可用 "literal suffix code"

C++1x支持文字后缀(cmp。例如http://ecn.channel9.msdn.com/events/GoingNative12/GN12Cpp11Style.pdf)。我正在使用gcc4.7并想为我们的系统引入一些单元。最值得注意的是,我们一半的代码使用度数,另一半使用弧度(由于各种第3方库),显然这总是导致错误的原因。能够说例如“弧度角=90_deg;”会很有帮助。我研究了如何实现它,它看起来可行,但是需要一些时间才能使一切正常。所以我想知道是否有一个完成/测试过的实现已经实现了所有可以使用的东西(不需要每个C++开发人员重新实现它,是吗?)。除了rad/deg,我正在寻找长

hibernate - "migrate business logic code into our domain model"是个好主意吗?

我正在阅读HibernateinAction,作者建议将业务逻辑移动到我们的域模型中(第306页)。例如,在本书提供的示例中,我们有三个实体,分别名为Item、Bid和User,作者建议添加一个placeBid(Userbidder,BigDecimalamount)方法到Item类。考虑到通常我们有一个独特的业务逻辑层(例如Spring中的Manager或Service类),其中包括控制事务等,这真的是一个好建议?不给我们的实体添加业务逻辑方法不是更好吗?提前致谢。 最佳答案 如前所述Wehaveadistinctlayerfor

hibernate - "migrate business logic code into our domain model"是个好主意吗?

我正在阅读HibernateinAction,作者建议将业务逻辑移动到我们的域模型中(第306页)。例如,在本书提供的示例中,我们有三个实体,分别名为Item、Bid和User,作者建议添加一个placeBid(Userbidder,BigDecimalamount)方法到Item类。考虑到通常我们有一个独特的业务逻辑层(例如Spring中的Manager或Service类),其中包括控制事务等,这真的是一个好建议?不给我们的实体添加业务逻辑方法不是更好吗?提前致谢。 最佳答案 如前所述Wehaveadistinctlayerfor

c++ - 使用 Code Cave 注入(inject) 64 位 DLL

我正在尝试将64位DLL注入(inject)64位进程(该问题的探索者)。我已经尝试使用Remote-thread\WindowHooks技术,但一些反病毒软件将我的加载程序检测为误报。看完这篇文章:DllInjectionbyDarawk,我决定使用代码洞穴。它适用于32位,但由于VS不支持64位的内联汇编,我不得不明确地编写操作码和操作数。我看了这篇文章:64Bitinjectionusingcodecave,如文章所述,存在一些差异:Thereareseveraldifferencesthathadtobeincorporatedhere:MASM64usesfastcall,s

c++ - 为什么在极少数情况下 pthread_exit() 在 pthread_detach() 之后调用时会导致 SEGV?

我在调用pthread_join()时遇到了一个C++无法轻易重现的SEGV(大约每100,000次测试运行中就会出现一次),因为我的应用程序正在关闭。我检查了errno的值,它是零。这是在Centosv4上运行的。在什么情况下pthread_join()会得到一个SEGV?这可能是某种竞争条件,因为它非常罕见。有人建议我不应该调用pthread_detach()和pthread_exit(),但我不清楚原因。我的第一个工作假设是pthread_join()被调用,而pthread_exit()仍在另一个线程中运行,这不知何故导致了SEGV,但是许多人表示这不是问题。在应用程序退出期间

c++ - 如何避免 "dynamic initialization in unreachable code"警告?

我正在编写类似于以下内容的模板化函数*:templatevoidfoo(Tt1){/*commoncode*/if(v){inti=bar();/*...*/return;}else{/*...*/}/*morecommoncode*/}当我编译它并且foo被实例化时v设置为false,编译器说:warning:dynamicinitializationinunreachablecode现在,由于模板参数,代码无法访问;这应该是完全可以接受的。我怎样才能避免或抑制这个警告?我宁愿不完全禁止此类警告。注意事项:我不想对true和false进行不同的专门化,因为有一些通用代码,我不想重复,