草庐IT

gcc-statement-expression

全部标签

c++ - x86、C++、gcc 和内存对齐

我有这个简单的C++代码:inttestFunction(int*input,longlength){intsum=0;for(longi=0;i#includeusingnamespacestd;intmain(){union{int*input;char*cinput;};size_tlength=1024;input=newint[length];//cinput++;cout如果我用带有-O3的g++4.9.2编译它,它运行良好。我预计,如果我取消对倒数第二行的注释,它会运行得更慢,但它会因SIGSEGV而彻底崩溃。ProgramreceivedsignalSIGSEGV,Se

c++ - caffe 安装 : gcc error namespace "std" has no member "isnan"

我正在尝试安装(py)caffe在ubuntu17.10上然而,当我执行makeall时,出现以下错误:./include/caffe/common.hpp(84):error:namespace"std"hasnomember"isnan"./include/caffe/common.hpp(85):error:namespace"std"hasnomember"isinf"2errorsdetectedinthecompilationof"/tmp/tmpxft_00004921_00000000-19_nesterov_solver.compute_61.cpp1.ii".Mak

Node Express应用程序中的中间件未触发

我正在使用中间件来调用下一条路线,但由于某种原因,它没有被调用。这是代码:app.get('/foo',function(req,res,next){console.log('firstroute')next('route')},function(req,res,next){//thisrouteisneverfiredconsole.log('secondroute')res.send('secondroute')})第二个功能未被调用。有任何想法吗看答案在第一个中间件功能中,您正在调用next与参数'route'。如文档,这导致后续回调被绕过:您可以提供与中间件一样行为的多个回调函数,除了

c++ - 有没有办法在 GCC 中禁用内联汇编程序?

我正在为LeetCode、Codeforces等编程竞赛开发一个在线评委系统。对于大多数编程竞赛,C/C++中不允许使用内联汇编程序,因此我想在我的系统中添加相同的限制。我想让GCC和G++在编译包含内联汇编的C/C++程序时产生错误,这样任何包含内联汇编的代码都会导致编译错误。有办法实现吗?我应该将一些命令行参数传递给GCC/G++吗?注意:禁用内联汇编只是为了遵守规则,而不是出于安全考虑。 最佳答案 有没有办法在GCC中禁用内联汇编程序?是的,有几种方法。在编译器中关闭汇编要在编译阶段执行此操作,请使用参数-fno-asm。但是

c++ - MFC 是否仅适用于 Visual Studio 而不是 Visual C++ Express?

MFC只能与VisualStudio一起使用,还是也可以与VisualC++Express一起使用? 最佳答案 现在有一个解决这个问题的方法,对于所有想使用免费版本的人。VisualStudioCommunity2013附带MFC(Microsoft基础类)。下载链接:https://www.visualstudio.com/products/visual-studio-community-vs编辑:VisualStudioCommunity2015现已发布。 关于c++-MFC是否仅适

c++ - 为什么简单的内联汇编函数不能在 GCC 中正常工作?

我有一个简单的内联汇编函数,它在MSVC中运行良好,但由于某种原因拒绝在AppleGCC4.2.1下运行(i386arch,强制32位模式)。幸运的是,更复杂的汇编函数可以正常工作,但是我不明白为什么这个函数不起作用...不幸的是,我无法调试它-从外观上看,XCode中没有寄存器窗口4.0.2(它是3.2版本)。我很肯定这个问题与英特尔风格的汇编无关。intConvert(doublevalue){_asm{fldvaluepusheaxfistpdwordptr[esp]popeax}//Thereturnedvalueisinsane} 最佳答案

c++ - GCC 汇编代码生成错误和解决方法

GCC4.5.2(在Ubuntu11.10x64上,但编译为32位)生成无效的汇编代码,我很好奇是否可以在不更改代码的情况下修复,只需应用选项或类似的东西。请注意,优化已经是-O0。我有两个功能:inlinelongClass::Get(){longv=*(long*)(m_p);m_p+=4;returnv;}inlinevoidClass::Command(){m_p+=Get();}GCC4.5.2生成此汇编代码:9840m_p+=Get();f689eff5:mov0x8(%ebp),%eaxf689eff8:mov0xd4(%eax),%eaxf689effe:mov%eax

c++ - GCC 中 cmath 的 pow() 的正确性

代码[GCC,使用-O2标志编译]intmain(){vector>matrixa(8);intff=5;ints=pow(ff,matrixa.size());intss=pow(double(ff),int(matrixa.size()));vector>comb(s);cout输出5^8=390624390625我想知道为什么s=390624而它应该是390625。如果我在没有-O2标志的情况下编译代码,则s=390625。此外,ss的转换似乎可以解决此问题。这是怎么回事?我的操作系统是Windows7Ultimatex64。不确定GCC版本,它带有Code::Blocks10.

c++ - C++ : "expected primary-expression before ‘>’ token"中的两个模板

这个问题在这里已经有了答案:WhereandwhydoIhavetoputthe"template"and"typename"keywords?(8个答案)关闭7年前。最小工作示例:#includestructPrinter{templatestaticvoidprint(Telem){std::coutstructMain{templatevoidprint(Telem){//Inthiscase,thecompilercouldguessTfromthecontext//Butinmycase,assumethatIneedtospecifyT.printer_t::print(e

c++ - 警告 : Comparison between signed and unsigned integer expression

我在codepad.org上运行以下代码时出现此错误。“在成员函数‘doubleXchange::getprice(std::string)’中:第87行:警告:有符号和无符号整数表达式之间的比较”这是我的代码:#include#include#includeusingnamespacestd;classXchange{public:Xchange();//doesnothing(?)doublegetprice(stringsymbol);private:vectorstocks;};doubleXchange::getprice(stringsymbol){for(inti=0;i