草庐IT

C-Header

全部标签

c++ - 如何使用 -std=c++17(可选、任意、string_view、变体)在 g++ 6.2.0 中包含 C++ 17 header

std::optional在C++17中,它是std::experimental::optional之前。我尝试编译一个包含的文件,使用命令:g++-std=c++17.cpp(在Bash终端中)。我收到以下错误:.cpp:5:20fatalerror:optional:Nosuchfileordirectory#include^compilationterminated但我可以#include就好了。我是否缺少一些头文件?如何包含optional标题?我也不能包含,或,得到同样的错误。 最佳答案 你不能。GCC6.2'ssuppo

c++ - 是什么导致 clang 找不到 unordered_map header ?

我正在尝试使用Clang++编译我在网上找到的程序。Makefile生成此命令:clang++-c-archx86_64-msse3-std=c++11-stdlib=libstdc++-Wno-missing-field-initializers-Wno-missing-prototypes-Wreturn-type-Wno-non-virtual-dtor-Wno-exit-time-destructors-Wformat-Wmissing-braces-Wparentheses-Wno-switch-Wunused-function-Wunused-label-Wno-unuse

c++ - 在 header 中使用未命名的 namespace 会如何导致 ODR 违规?

在GoogleC++风格指南中,Namespaces部分指出“在头文件中使用未命名的命名空间很容易导致违反C++统一定义规则(ODR)。”我明白为什么不在实现文件中使用未命名的命名空间会导致ODR违规,但不知道在header中使用如何做到这一点。这怎么会导致违规? 最佳答案 原因是如果你真的在匿名中使用任何东西命名空间,你冒着未定义行为的风险。例如:namespace{doubleconstpi=3.14159;}inlinedoubletwoPiR(doubler){return2.0*pi*r;}内联函数(以及类、模板和任何其他

c++ - 使用 boost::filesystem 添加 header 后,不再找到来自 google test 的单元测试

我有一个使用谷歌测试框架的单元测试项目,我的测试工作正常。但是现在我添加了boost::filesystem标题类似#include之后我的项目链接和编译正常,但是根本没有找到测试,当我运行测试时它给了我-Processfinishedwithexitcode-1073741515(0xC0000135)Emptytestsuite.如果我有这段代码:#includeTEST(Test,Test1){ASSERT_FALSE(true);}它工作得很好并找到失败的测试用例,但是如果我像这样添加boostheader:#include#includeTEST(Test,Test1){AS

c++ - Eclipse cdt : Includes header file correct, 编译,但突出显示源代码: "Unresolved inclusion"

我有一个项目使用另一个项目的共享库。在项目设置中,我为GCC和G++编译器(-L和-l选项)设置了正确的包含路径和库。一切都编译得很好,这里没有问题。但是源代码没有正确分析。我包含的头文件(位于另一个项目中)被标记为“Unresolvedinclusion并且我在任何地方使用它的东西,源也被突出显示。#include"myHeader.h"有什么想法吗?谢谢! 最佳答案 您在这里(可能)缺少的是告诉索引器在哪里寻找这些header。我通常管理自己的Makefile,所以我不知道如何让它同时适用于eclipse管理的makefile和

c++ - 在 C++ 中,如何在类和函数的 header 中编写完整的实现(可能是模板化的)

我通常在头文件中声明并在cpp文件中实现,但现在我正在做作业,而且,显然为了简洁,导师不希望我这样做,而是坚持我将所有代码都写在头文件中文件。那么,最好的方法是什么?对于类,是不是应该先声明一切,然后到页面底部开始实现?classmyClass{voidmyMethod();}voidmyClass::myMethod(){//....}或者我应该按照我声明的那样实现classmyClass{voidmyMethod(){//...};}免费功能怎么样?什么时候应该写“inline”? 最佳答案 orshouldIjustimple

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++ - 抑制特定包含 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非常擅长处理依赖关系......