草庐IT

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

c++ - 由于对具有 std::string 的方法的 undefined reference ,链接 webrtc-native 时出错

我正在尝试构建webrtc版本62,使用以下内容1.gitcheckout-bbranch62refs/remotes/branch-heads/622.gngenout_release_62/x64/Debug--args="rtc_include_tests=falsertc_use_h264=falseuse_rtti=trueis_component_build=falseenable_iterator_debugging=falseenable_nacl=falsetarget_os=\"linux\"target_cpu=\"x64\"is_debug=true"3.nin

c++ - decltype 在模板类中声明的结构成员上失败

我遇到代码无法为我正在使用的外部库编译的问题。我相信该库可以用gcc编译得很好,但它无法用clang为我编译。我可以按如下方式重新创建问题templateclassA{public:structB{inta;};voidtest();private:T_t;};templatevoidA::test(){printf("Result%d",std::numeric_limits::max());}intmain(intargc,char**argv){autot=A();t.test();return0;}这在clang上编译失败并出现以下错误error:invaliduseofnon

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

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

c++ - 带有自定义模板的 STL 迭代器

我有以下模板方法,templatevoidClass::setData(vectordata){vector::iteratorit;}我收到以下编译错误(XCode/gcc)error:expected`;'before'it'我发现其他人也有类似的问题here(readdowntoseeit'sthesameeventhoughitstartsoutwithadifferentissue)但他们似乎已经通过更新VisualStudio解决了。这让我猜测这是一个编译器问题,它应该编译,对吗?通过从0到size的索引进行迭代是可行的,但这不是我更愿意实现此功能的方式。还有另一种解决方法

c++ - 在 C++ 中,类型名称的 typeid 总是在编译时求值吗?

我想检查当与类型名称(即typeid(int)、typeid(std::string)...)一起使用时,typeid在编译时被评估。为此,我在一个循环中重复了两个typeid调用的比较,并在启用优化的情况下对其进行了编译,以查看编译器是否简化了循环(通过查看执行时间,当它简化时为1us160毫秒,当它没有时)。而且我得到了奇怪的结果,因为有时编译器会简化代码,有时却不会。我使用g++(我尝试了不同的4.x版本),程序如下:#include#include#includeclassDisplayData{};classRobotDisplay:publicDisplayData{};c

c++ - distcc 中的链接阶段

在使用distcc构建项目时,链接阶段是在本地完成的,而不是像编译那样发送到其他计算机上完成的,这有什么特别的原因吗?阅读distcc白页并没有给出明确的答案,但我猜测链接目标文件所花费的时间与编译相比并不是很重要。有什么想法吗? 最佳答案 distcc的工作方式是在本地预处理输入文件,直到创建单个文件翻译单元。然后该文件通过网络发送并编译。在那个阶段,远程distcc服务器只需要一个编译器,它甚至不需要项目的头文件。然后将编译的输出移回客户端并在本地存储为目标文件。请注意,这意味着不仅链接,而且预处理也在本地执行。这种工作分工对于

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

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

c++ - 源文件具有不同编译器标志的 Makefile

如何在Makefile中为不同的源文件使用不同的编译器标志?例如,我想要一个生成的Makefile:g++-c-COMPILER_FLAGS_1-gsource1.cpp-osource1.og++-c-COMPILER_FLAGS_2-gsource2.cpp-osource2.og++-c-COMPILER_FLAGS_2-gsource3.cpp-osource3.og++-c-COMPILER_FLAGS_2-gsource4.cpp-osource4.og++-c-COMPILER_FLAGS_3-gsource5.cpp-osource5.og++-c-COMPILER_F

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