草庐IT

c++ - 如何使用 MinGW + Code::Block 编译的 GUI 程序的控制台框

当我在MinGW+MSys中使用命令行编译并运行一个简单的Win32GUI程序时:$g++main.cpp-oapp-std=c++0x$./app只显示一个对话框。但是当我把这个程序放入Code::BlocksIDE并编译它时,它总是会产生一个带有对话框的黑色控制台框。在链接选项中添加-mwindows无效。ma​​in.cpp:#includeintWinMain(HINSTANCE,HINSTANCE,LPSTR,int){MessageBox(0,"Hello,Windows","MinGWTestProgram",MB_OK);return0;}我怎样才能去掉控制台框?

c++ - 为什么在文件 I/O 中读取数据 block 比逐字节读取更快

我注意到逐字节读取文件比使用fread读取文件需要更多时间来读取整个文件。根据cplusplus:size_tfread(void*ptr,size_tsize,size_tcount,FILE*stream);从流中读取count个元素的数组,每个元素的大小为size字节,并将它们存储在ptr指定的内存块中。Q1)那么,fread又是按1字节读取文件,这不是和按1字节方法读取一样吗?Q2)结果证明fread花费的时间更少。来自here:Iranthiswithafileofapproximately44megabytesasinput.WhencompiledwithVC++2012

c++ - 当一个 block 返回一个值时,它叫什么?

我最近看到这段代码,我觉得它不合法(但gcc编译了它)。我不太介意结构,只是想给它起个名字:#defineMAX(a,b)\({\typeof(a)_a=(a);\typeof(b)_b=(b);\(_a>_b)?(_a):(_b);\})显然,最后一条语句的值作为命名空间限定的表达式的“值”返回。编辑:感谢大家的回答。事实证明这是对普通C的扩展,称为语句表达式。 最佳答案 它不是命名空间,它是一个宏,返回两个值中的最大值。语句末尾的\用于附加多个语句并创建多行宏。该代码不是标准的C++,但可以在gcc中编译,因为它作为gcccom

c++ - 将代码分成 block 是好的做法吗?

如果我有一个方法可以做多个相关的事情,那么将方法做的每个“事情”都放在一个单独的block中是否是一个好习惯?例如{intvar//Code}{intvar//MoreCode}这将有助于减少局部变量的数量,并使代码更具可读性,但我不确定这是否是个好主意。 最佳答案 如果您的函数执行的多项操作足够长,以至于您会考虑像这样将这些操作拆分成多个block,那么您应该将函数拆分成多个更小的函数。当然,在某些情况下引入新的作用域block很有用。例如,如果您使用某种类型的scoped_lock来锁定互斥锁或其他同步对象,则可以通过引入作用域

c++ - omp 并行 block 外的 omp pragma

是否可以在omp并行block之外使用omppragma,如critical、single、master或barrier?我有一个函数可以从OMP并行block调用,也可以不调用。如果是,我需要将部分代码包含在关键部分中。换句话说,这段代码可以吗?voidmyfunc(){#pragmaompcritical{/*code*/}}//notinsideanompparallelregionmyfunc();#pragmaompparallel{//insideanompparallelregionmyfunc();}我在OpenMP文档中没有发现这一点。我想代码的行为应该与1线程执行完

c++ - C++中绝对差计算的可变 block 大小和

我想执行可变block大小sumofabsolutedifference在C++程序中尽可能高效地使用16位整数的二维数组进行计算。我对实时block匹配代码感兴趣。我想知道是否有任何软件库可用于执行此操作?该代码在WindowsXP上运行,我一直在使用VisualStudio2010进行编译。CPU是2核AMDAthlon64x24850e。通过可变block大小绝对差之和(SAD)计算,我的意思如下。我有一个较小的二维数组,我称之为template_grid,还有一个较大的二维数组,我称之为image。我想在图像中找到使模板中的像素与图像中该区域中的像素之间的绝对差之和最小的区域。

C++ block scope extern declaration linkage,混淆C++标准解释

标准N3242(C++11草案)和N3797(C++14draft)两者有相同的段落。§3.5Programandlinkage[basic.link]¶6Thenameofafunctiondeclaredinblockscopeandthenameofavariabledeclaredbyablockscopeexterndeclarationhavelinkage.Ifthereisavisibledeclarationofanentitywithlinkagehavingthesamenameandtype,ignoringentitiesdeclaredoutsidethei

c++ - 是什么导致这种在 try block 展开期间抛出析构函数的奇怪行为?

当tryblock遇到异常时,堆栈将展开。如果在tryblock中创建了一个对象,则调用析构函数。如果析构函数抛出另一个异常,则不会捕获此异常并终止程序。如果你有:structA{~A()noexcept(false){std::cout然后你的try-catchblock是这样的:try{Aa1;Aa2;}catch(...){}然后当tryblock结束时,a2的析构函数抛出异常,异常被捕获,然后a1的析构函数抛出并终止程序。一切都按预期进行。但是,如果您引入另一个结构,该结构也抛出析构函数,但继承自A或具有A的实例作为成员,事情就会变得困惑。例如,如果您有:structB:A{~

c++ - 高效的 TIFF 图 block 提取 C++

我正在处理大约20000x20000像素的1gb大型tiff图像。我需要从图像中随机提取几个图block(大约300x300像素)。我尝试了以下解决方案:Libtiff(我能找到的唯一低级库)提供TIFFReadline()但这意味着读取大约19700个不必要的像素。我实现了自己的tiff阅读器,它可以从图像中提取一个图block,而不会读取不必要的像素。我预计它会更快,但是对磁贴的每一行进行搜索会使它变得非常慢。我还尝试将包含我的图block的文件的所有行读取到缓冲区,然后从缓冲区中提取图block,但结果大致相同。我希望收到可以改进我的图block提取工具的建议!欢迎一切,也许你可

c++ - 识别 LLVM 中 block 的封闭循环

对于由BasicBlock类表示的LLVM基本block,我如何确定哪个最近的循环(如果有)包含该block。我想在runOnModule传递中识别它。 最佳答案 您可以注册一个LoopInfo依赖项并使用getLoopF​​or(BasicBlock*BB):Loop*llvm::LoopInfo::getLoopFor(constBasicBlock*BB)const您可以在以下位置查看文档:http://llvm.org/doxygen/classllvm_1_1LoopInfo.html#a4abca289c73cd0948