草庐IT

animation_default_headers

全部标签

c++ - 如何使用 `std::error_category` 和 system_error header 中的其他内容?

C++中已经有足够多的错误处理策略。我们有异常处理、错误返回代码和这个ERRNO困惑。system_errorheader在这里扮演什么角色?我如何使用那里的功能?对我来说,它看起来只是随意组合在一起。我正在使用cppreference网站作为引用。 最佳答案 您可以throw和catch它作为一个正常的异常(exception)。它只是std::exception的一部分等级制度。std::system_error延伸std::runtime_error延伸std::exception应该什么时候使用?通常它用于将C风格的ERRN

c++ - 仅当 CMake 中的 header 更改时才重新链接共享库

使用CMake,是否有一种方法可以生成构建系统,如果共享库的源代码发生变化而其header未发生变化,则不会重新链接下游的所有内容?在Makefile中,我在共享库本身上使用了带有仅顺序先决条件的规则,并在库header上使用了常规先决条件来获得这种效果。我知道这不能严格保证生成正确的构建,例如您可以从共享库中删除函数定义,但这是为了快速重建调试版本,根据我的经验,它几乎总能生成正确的版本。我认为我遇到过一两次运行时链接器错误,但在那个奇怪的情况下,像往常一样运行构建并没有太大问题。不过,如果有充分的理由表明这实际上是一个糟糕的想法并且不应该这样做,那也可能是一个答案。

c++ - 带有 C++ header 的 VSCode 智能感知

我搜索过这个,但我找不到任何东西。如果是骗局,我会毫无问题地关闭我的问题。我在VSCODE中有一个c_cpp_properties.json配置文件{"configurations":[{"name":"Mac","includePath":["/usr/include","/usr/local/include","${workspaceRoot}"],"defines":[],"intelliSenseMode":"clang-x64","browse":{"path":["/usr/include","/usr/local/include","${workspaceRoot}"],

c++ - 设置包括 mac os 中 eclipse CDT 中的路径(来自框架的 header )

例如我需要包含一个标题#include而实际上是OpenGL.framework/Headers/下的头文件glext.h。因此,无法为eclipse提供关于“OpenGL/glext.h”的物理路径,而且我总是收到Unresolvedinclusion警告。我仍然可以构建和运行它们(使用托管的makefile项目),但是无法从那些“已解析”的头文件中浏览函数或定义。有什么解决办法吗? 最佳答案 虽然不理想,但我的解决方案是创建一个文件夹“/Developer/FrameworkHeaders”(尽管名称并不重要),并从例如“/Sy

c++ - VS2008 : Disable warnings in included header files outside the project

这可能吗?我不想全局禁用警告,因为我想检查我自己的头文件是否有警告。 最佳答案 您可以禁用有关包含外部头文件的警告:#pragmawarning(push)#pragmawarning(disable:thewarning)//includehere#pragmawarning(pop)如果您需要多次包含标题,您可以使用编译指示创建一个标题并将其包含在内。问了同样的问题here. 关于c++-VS2008:Disablewarningsinincludedheaderfilesoutsi

c++ - 如何通过 AST 为访问者模式解决 C++ 中的 header 重复问题

请注意:这些是描述一般困境的代码片段。完整的代码确实包括“includeguards”/#pragmaonce/whathaveyou。我正在实现遍历AST的访问者模式,想知道解决以下问题的C++方法是什么:我有AST.h,它有基本的AST节点类声明:classNode{public:virtualvoidaccept(Visitor*v){v->visit(this);}};连同用于声明、表达式等的所有具体节点子类。然后我有ASTVisitor.h声明访问者界面,按照以下行:classVisitor{public:Visitor(){}virtual~Visitor(){}virtu

c++ - 使用 CMake 将 qt header 声明为系统 header

我用CMake和qt说:find_package(Qt5COMPONENTSWidgets)另外,我想使用高警告级别并且我想将警告视为错误。所以我使用:set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-Werror-Wall-Wextra")但是,我不关心我使用的库中的警告。因此,例如,为了包含boost,我在include_directories调用中添加了SYSTEM,这样我就不会被来自外部库的警告所困扰:include_directories(SYSTEM${Boost_INCLUDE_DIR})但这对qt不起作用,因为没有显式的include_dir

< input class =“ BTN BTN-DEFAULT BTN-SM用户BTN”>带下划线的文字问题

正如问题所写<button>vs.<输入类型=“button”/>。要使用哪个?我用:"设置:"我这样做是因为我没有通过按钮发送任何内容。问题是我得到了下划线的文本,例如:如何“删除”红线?看答案这就是拼写检查错误,您可以通过添加'spellcheck="false"'输入,即:""

C++ : noexcept (or throw()) virtual destructor = default;

下面的代码是合法的吗?classC{virtual~C()noexcept=default;};或classC{virtual~C()throw()=default;};(throw()已弃用,但我的编译器不支持noexcept;;) 最佳答案 8.4.2[dcl.fct.def.default]Anexplicitly-defaultedfunction[...]mayhaveanexplicitexception-specificationonlyifitiscompatible(15.4)withtheexception-spe

c++ - 警告 : non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]

这个问题在这里已经有了答案:C++ArrayInitializersWarnings(2个答案)关闭8年前。我刚刚在我的机器上安装了最新版本的cygwin和eclipseluna。它工作正常,我能够运行我的项目。但是,当我构建它们时,我收到了我不明白的警告。例如,这是我从“c++Primer”一书的网站上获得的头文件“Sales_item.h”的警告:warning:defaultedanddeletedfunctionsonlyavailablewith-std=c++11or-std=gnu++11[enabledbydefault]Sales_item()=default;^..