草庐IT

c++ - 抑制 GCC 警告

我有代码:#ifdefQ_OS_LINUX#pragmaGCCdiagnosticpush#pragmaGCCdiagnosticignored"-Wcomment"#include"header.h"#pragmaGCCdiagnosticpop#endif而且我想禁止与header.h和header.h中包含的所有header相关的GCC警告消息。但我仍然收到与header.h中包含的header相关的“-Wcomment”警告。我怎样才能避免这种情况?谢谢海湾合作委员会4.8.2编辑:我收到的警告如下所示:/------SetAnalogOutputfor8022/8026---

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++ - Xcode C++ vector : Implicit instantiation of undefined template

我在不同的IDE上运行这段代码,它成功了。出于某种原因,我在Xcode上收到上述错误消息。我假设我缺少某种标题,但我不确定是哪一个。#include#include#include#includeintmain(){vectorlistRestaurants;//error:Implicitinstantiationofundefinedtemplatereturn0;} 最佳答案 Xcode10.2.1向我展示了错误Implicitinstantiationofundefinedtemplate'std::__1::vector,

C++:如何使用尚未定义的类型?

C++要求在使用前定义所有类型,因此以正确的顺序包含头文件非常重要。美好的。但是我的情况呢:Bunny.h:classBunny{...private:Referenceparent;}编译器提示,因为技术上Bunny在我用它自己的类定义时还没有完全定义。因为我做了一些愚蠢的事情(无关)。除了重写我的模板类Reference使其采用指针类型(在这种情况下我可以使用Bunny的前向声明),我不知道怎么解决。有什么建议吗?编辑:我的Reference类(XObject是数据模式对象的基类):templateclassReference{public:Reference():m_ptr(NU

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

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

linux 中的 c++ 库引用

您好,我是Linux编程新手,我想知道Linux是否有类似于MSDN的引用文档?特别是,我对离线版本感兴趣C++标准库引用和我计算机上安装的任何库,我可以在发出man或info命令时使用它来浏览或查找。另外,如果我想知道特定头文件或特定函数的实现......我应该寻找哪些地方?/include,/usr/local/include? 最佳答案 使用man工具。大多数软件包和编程语言都有标准的手册页。例如,要查找有关vfprintf的信息,请键入manvfprintf,您将获得有关所有printf变体的手册页。默认情况下,某些发行版可

c++ - 我可以设置编译时标志以包含标题吗?

我有一个配置类,我想将其用于各种构建。类本身在构建之间发生变化,但类名保持不变,头文件名也是如此。此类的不同版本保存在不同的子文件夹中。例如。main/config.hmain/config.cppsecondary/config.hsecondary/config.cpp是否有一种好方法可以通过编译时标志或命令行选项让构建确定要使用的header/cpp?我已经有很多配置,并希望将来有更多配置。我想避免一长串#ifdef/#elif/#elif/etc..编辑:我想避免单独构建,并想避免在整个代码中使用#defines。如果我之前没有说清楚,我很抱歉!>_

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