草庐IT

range-header

全部标签

c++ - 查找抛出 std::out_of_range 的对象

我的一个程序抛出一个std::out_of_range。我知道这样做的原因,我正在某处访问索引为-1的vector。我不知道的是vector的名称(变量名称)和代码中的位置。我的程序产生的错误消息如下所示:terminatecalledafterthrowinganinstanceof'std::out_of_range'what():vector::_M_range_checkzsh:abort(coredumped)./main.xconfig.cfg而由其他人(他也使用g++)的代码生成的错误消息发布在问题C++accessingvector中看起来像这样:Errorforvec

c++ - for_each 和 ranged base for on 2D array

我尝试使用for_each和基于范围的for循环打印二维数组。我的程序是这样的:-#include#includeusingnamespacestd;intmain(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};//for_each(begin(a),end(a),[](intx){cout为什么我的第一个for_each会抛出错误,为什么行需要&符号?它的类型是什么?row是指针吗? 最佳答案 for_each(begin(a),end(a),[](intx){coutbegin(a)产生一个int

c++ - 从库中的 std::exception 派生:Does a headers-only solution work for catching exceptions?

在我们的跨平台开源库中,我们派生自std::exception以定义可以在库代码和用户代码中捕获的自定义异常。我看到这实际上是一个推荐的过程,但在VisualStudio2015(或者更确切地说,伴随的新MSVC版本?)中,在实现类(warningC4275)中抛出警告-另请参见此处:Howtodllexportaclassderivedfromstd::runtime_error?当然我们可以忽略这个错误,但这对我来说似乎是错误的。与旧的VisualStudio版本相比,出现警告的原因似乎是std::exception曾经在旧的MSVC版本中导出,但同时不再导出。无论哪种情况,我都觉

c++ - Clang 无法再使用 <functional> header 编译程序

我在运行ArchLinux的系统上使用clang版本4.0.0,它一直运行良好,但最近我无法再编译使用某些STLheader的程序了!详细信息:clang--version的输出:clangversion4.0.0(tags/RELEASE_400/final)Target:x86_64-unknown-linux-gnuThreadmodel:posixInstalledDir:/usr/bingcc--version的输出:gcc(GCC)7.1.120170528示例:我尝试编译以下简单程序:#includeintmain(){return0;}我正在使用以下命令:clang++

c++ - __glibcxx_function_requires 和 __glibcxx_requires_valid_range 宏是如何工作的?

templateinline_Tpaccumulate(_InputIterator__first,_InputIterator__last,_Tp__init,_BinaryOperation__binary_op){//conceptrequirements__glibcxx_function_requires(_InputIteratorConcept)__glibcxx_requires_valid_range(__first,__last);for(;__first!=__last;++__first)__init=__binary_op(__init,*__first);r

c++ - 抑制特定包含 header 的 g++ 警告 "-Wliteral-suffix"

我正在做一个项目,在这个项目中我使用了新的c++11标准。正因为如此,现在很少有库中的include-header会生成警告-Wliteral-suffix,我会禁止包含它。我找到了一个使用编译指示的简单解决方案,但它对我不起作用HowtosuppressGCCwarningsfromlibraryheaders?这是我当前的代码:#pragmaGCCdiagnosticpush#pragmaGCCdiagnosticignored"-Wliteral-suffix"#include#include#include#pragmaGCCdiagnosticpop库生成的所有当前警告如下所

c++ - 处理 header 中令人痛苦的长命名空间名称

对于需要在头文件中引用的looong符号,有什么可以做的吗?ABDEFGHIJ::ZXCBVB::AWEDADSDEM::GFGBKGDF::Tools::Item?我知道在头文件中你不应该使用using因为它会把包含它的人搞得一团糟。我什至能想到的唯一可以自行清理的有效功能是#define+#undef但这看起来很糟糕。是否有我不知道的解决此问题的新功能?我也对任何受欢迎的提案感兴趣。也许使用和方括号block语法,让我将效果限制在我的标题...? 最佳答案 usingnamespace不是好的做法在头文件中的全局范围内使用指令。

c++ - 如何检测 make 依赖列表中的 header 更改

经过近十年的C#和VC++编码,我回到了linux–g++–make–emacs环境。试图刷新我关于编写make文件的内存我没有遇到太多问题,但我偶然发现了以下问题,我承认我不记得我过去是如何解决它的:假设一个特定的.cpp文件对其他几个头文件有一些依赖性(撇开它易于处理的相应头文件)......检测某些.h已更改的最佳方法是什么?我当然不喜欢将它们放在我的目标依赖列表中的想法,因为这是一个手动且容易出错的过程!简单的答案当然是只要有.h更改就构建干净,但我真的不记得标准方法是什么......。在VC++中,我不必处理这个问题,因为IDE非常擅长处理依赖关系......

c++ - C POSIX 函数的 header

我在哪里或如何找到正确的Cheader以包含在C++程序中以获得在POSIX兼容环境中声明的C函数的声明?我问这个是因为我需要使用open()出于我的目的在我的C++程序中进行系统调用,因此我最初尝试包含有关open()的在线文档中提到的header。(在概要部分),它们是sys/stat.h和fcntl.h.然而,在尝试编译时,编译器提示open()没有宣布。google了一下,发现还有一种可能是unistd.h.我尝试使用该header并编译程序。所以我回到POSIX文档以阅读更多关于unistd.h的信息检查是否open()那里提到过,但我找不到任何相关信息。我做错了什么?为什么

c++ - 在实现中重新包含 header

假设我有一个标题foo.h像这样:#ifndefFOO_H#defineFOO_H#include#include"non_standard_class.h"std::stringfoo(MyClassa);...#endif和实现foo.cpp将是#include#include"foo.h"std::stringfoo(MyClassa){std::vectorx;MyClassb;...}重新包含是一个好习惯吗?和non_standard_class.h在foo.cpp?重点是:如果我阅读foo.cpp我如何理解MyClass来自哪里?我需要看看foo.h但这会更加困难。