草庐IT

Non-blocking

全部标签

c++ - 在两个 ASM GCC 内联 block 之间传播进位

尊敬的程序集/C++开发人员,Thequestionis:Doespropagatethecarry(oranyflag)betweentwoASMblockisrealisticortotallyinsane,evenifitworks?几年前,我为低于512位(编译时)的大型算术开发了一个整数库。我此时没有使用GMP,因为对于这种规模,由于内存分配和二进制表示的模型选择,GMP变慢了bench.我必须承认我使用BOOST_PP创建了我的ASM(字符串block),它不是很出色(如果好奇请看一下vli)。图书馆运作良好。但是我注意到此时不可能在两个ASM内联block之间传播状态寄存

c++ - SIMD/SSE : How to check that all vector elements are non-zero

我需要检查所有vector元素是否非零。到目前为止,我找到了以下解决方案。有一个更好的方法吗?我在Linux/x86_64上使用gcc4.8.2,指令高达SSE4.2。typedefcharChrVect__attribute__((vector_size(16),aligned(16)));inlinebooltestNonzero(ChrVectvect){constChrVectvzero={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};return(0==(__int128_t)(vzero==vect));}更新:上面的代码被编译为以下汇编代码(当编译为非

c++ - 如果我尝试在 C++ 中的 catch block 中抛出一些东西,为什么会导致终止

我有以下C++代码,它给了我一个惊喜。问题是,如果我在catchblock中抛出除了重新抛出之外的东西,程序将通过调用abort终止并在GCC4中给出错误消息,“在抛出'int'实例后调用终止”。如果我只使用“抛出;”重新扔进catchblock,一切都会好起来的。#include#include#includeusingnamespacestd;intmain(){try{throwstd::string("firstthrow");}catch(std::string&x){try{std::cout 最佳答案 如果你抛出一个i

c++ - 将静态 libcurl 添加到 Code::Blocks IDE

我不知道如何将静态libcurl库正确添加到我的Code::BlocksIDE。我希望它是静态的,因为在我的程序运行期间不需要默认情况下不包含在Windows中的.dll文件。我正在使用这个libcurl:http://curl.haxx.se/dlwiz/?type=lib&os=Win32&flav=-(没有OpenSSL的minGW)这是我的全局编译器设置:http://img845.imageshack.us/img845/1381/halpr.jpg我收到以下错误:ld.exe||cannotfind-lCURL_STATICLIB|||===Buildfinished:1e

c++ - 如何在一个 catch block 中捕获所有类型的异常?

在C++中,我尝试一次捕获所有类型的异常(如C#中的catch(Exception))。它是如何完成的?更重要的是,如何捕捉被零除异常? 最佳答案 catch(...){//Handleexceptionsnotcovered.}重要注意事项:更好的方法是捕获您实际上可以从中恢复的特定类型的异常,而不是捕获所有可能的异常。catch(...)还将捕获某些严重的系统级异常(因编译器而异),您将无法从中可靠地恢复。以这种方式捕获它们然后吞下它们并继续可能会导致您的程序出现进一步的严重问题。根据您的上下文,可以接受使用catch(...)

c++ - c或c++中的静态 block 是什么?

这个问题在这里已经有了答案:What'stheC++idiomequivalenttotheJavastaticblock?(7个答案)关闭3年前。我想知道什么是C或C++中的静态block并举例说明?我知道什么是静态,但静态和静态block之间有什么区别?

c++ - 在 block 作用域中使用 extern

clang、gcc和VS2013都提示在main()中重新定义了w,但我在标准中找不到任何不允许这样做的内容。namespaceN{externintj;intj;}intmain(){externintw;intw;}这些段落说明了在block范围内使用extern声明,但它们似乎没有证明错误消息的合理性:§3.3.1/4Givenasetofdeclarationsinasingledeclarativeregion,...[Note:Theserestrictionsapplytothedeclarativeregionintowhichanameisintroduced,whi

c++ - main() 函数中的 try\catch block 没有括号

VisualStudio2015;C++语言。我记得我在某处读到有关入口点(即main方法)的内容,可以这样写:#includeusingnamespacestd;intmain()try{return0;//Iamhere...}catch(...){cout即在这种情况下,try\catchblock不在括号中:intmain(){//startbrackettry{return0;}catch(...){return1;}}//endbracket这两种情况都已成功编译并且也可以正常工作,但是......在第一个变体中,当我在tryblock之后逐步按下F10键时,我也进入cat

c++ - 将 NON-POD 类型传递给 Variadic 函数是未定义的行为?

Inthisdocument,作者说OnlyaPOD-typecanbeanargumentfortheellipsis"..."whilestd::stringisnotaPOD-type.我将此理解为将NON-POD类型传递给Variadic函数是未定义的行为。对吗?不过,他是在说C/C++标准吗?我试图在n3242C++规范中找到它。但是找不到。我想知道我的理解是否正确,这是一个标准。 最佳答案 它在C++115.2.2/7中指定:Passingapotentially-evaluatedargumentofclasstype

c++ - 有没有自动生成 doxygen 注释 block 的软件?

我正在开发一个大型C++程序,现在我决定用Doxygen来记录它。有大量的类、方法、函数、宏等等。因此,我正在寻找能够扫描我的源代码树并在每个“可记录项目”顶部插入Doxygen注释block的软件,以便我稍后对其进行编辑并添加方法描述等详细信息。是否存在这样的软件?我在GNU/Linux下使用Code::BlocksIDE,所以不需要VisualStudio插件。 最佳答案 我在这里很困惑。自动生成评论的目的是什么?评论旨在带来额外的值(value):/***\brief:findsthepersonbasedonitsname*