草庐IT

precompiled-headers

全部标签

c++ - 如何识别生成警告的 header ?

我相信你们中的许多人都熟悉这组警告。大多数情况下,这些都是由包含文件生成的。解决方案是pragmapush/disable/pop,但识别header并不是一件好事。除了反复试验之外,有谁知道识别header的方法吗?1>File1.cpp1>C:\ProgramFiles(x86)\MicrosoftVisualStudio9.0\VC\include\cstdio(49):warningC4995:'gets':namewasmarkedas#pragmadeprecated1>C:\ProgramFiles(x86)\MicrosoftVisualStudio9.0\VC\inc

c++ - STL 容器的转发 header

header有伴如果我只需要流的指针或引用,这就足够了。后者是重载时的常见场景operator.STL容器是否有这样的header?我想定义几个引用STL容器的函数,我不想包含,,等。阿尔。完整地列出这些类型,这样我就可以引用这些类型。这个问题是否有标准、提升或其他解决方案? 最佳答案 IstheresuchaheaderfortheSTLcontainers?不,没有。Aretherestandard,boostorothersolutionstothisproblem?据我所知没有。您必须包含这些header。

c++ - 使用 GNU make 创建多个预编译头文件

我使用gcc(以g++运行)和GNUmake。我用gcc预编译一个头文件precompiled.h,创建precompiled.h.gch;Makefile中的以下行执行此操作:#MYCCFLAGSisalistofcommand-lineparameters,e.g.-g-O2-DNDEBUGprecompiled.h.gch:precompiled.hg++$(MYCCFLAGS)-c$一切都很好,直到我不得不使用不同的命令行参数运行g++。这样的话,即使precompiled.h.gch存在,也无法使用,编译会慢很多。在gcc文档中我已经阅读了处理这种情况的方法,我必须创建一个名

c++ - 在 VC++ 项目中开始使用 PCH

我正在VS2012中处理一个VC++项目,完整编译需要大约8-10分钟。我知道PCH可以将编译时间加快10倍。我目前在我的项目中禁用了PCH,我在需要的地方包含了头文件。如何开始使用PCH?我到处寻找“如何”指南,但我得到的只是文档。我假设我必须:为PCH配置我的项目,创建一个空白的PCH头文件从每个.cpp收集标题文件并将其放入PCH头文件修改每个文件,删除所有头文件导入重新编译并希望一切正常;)我如何开始这个(特别是#1)?您是否修改过一个项目以使用PCH,其中有哪些绊脚石或常见问题/问题?PCH是否会导致任何问题,还是与正常包含的编译时/运行时行为相同?是否有工具可以自动化该过程

c++ - 什么时候在一个文件中多次包含相同的 header 有用?

这个问题在这里已经有了答案:Isthereacasewhereincludingthesameheadertwiceisactuallyhelpful?(6个答案)关闭8年前。我正在阅读有关在一个文件中多次包含同一header的信息,并发现一个有趣的声明(link):Thereareacoupleoftrickswithheaderfileswereyoudeliberatelyincludeitmultipletimes(thisdoesactuallyprovideausefulfeature).我知道这些技巧在现实世界的项目中可能是不受欢迎的并且令人困惑(特别是因为人们采取预防措

c++ - 是否存在两次包含相同 header 实际上有帮助的情况?

为我的h/hpp文件创建header保护一直是我的标准做法,但我想知道,为什么甚至可以包含同一个文件两次?是否存在您实际需要不protectedheader的情况? 最佳答案 “参数化”头文件可用于在C中模拟C++风格的模板。在这种情况下,头文件将依赖于许多宏(“模板参数”)。它将根据这些宏的实际“值”生成不同的代码。因此,此类header的典型用法看起来是一系列“模板参数”宏定义,后跟#include指令,然后是另一个“模板参数”宏定义序列,然后是同样的#include,等等。https://stackoverflow.com/a

c++ - 为什么 C++ 找不到 GLM header ?

我没有将GLM放入usr/local/include或usr/include的权限,但我需要将GLM用于openGL。代码(我无法更改)像这样查找GLM:#include#include#includeglm文件夹与我的main.cpp位于同一目录中,此代码来自该文件夹。我认为它不起作用,因为它正在usr/include中寻找glm,内置header所在的位置(我使用的是redhatlinux)我怎样才能阻止这种情况发生,因为我无法运行:g++main.cpp-lGL-lglut-lGLEW没有这些错误:main.cpp:46:23:error:glm/glm.hpp:Nosuchfi

c++ - 将仅 header 模板库编译为共享库?

我们正在设计一个新的C++库,并决定采用基于模板的方法以及一些针对特殊情况的特定部分模板特化。特别是,这将是一个只有标题的模板库。现在,有人担心这会导致二进制文件中出现大量代码重复,因为此模板“库”将被编译到使用它的任何其他共享库或可执行文件中(可以说只有那些被使用的部分)。我仍然认为这不是问题(特别是,编译器甚至可能内联它不能跨共享库边界的东西)。但是,由于我们知道这将用于有限的类型集,是否有办法将此header编译成一个库,并提供一个仅包含声明而没有其他任何内容的不同header?请注意,该库不仅必须包含通用实现,还必须包含部分特化.. 最佳答案

c++ - 为什么我不应该在 header 中初始化静态变量?

这个问题在这里已经有了答案:HowtoinitializeprivatestaticmembersinC++?(18个答案)关闭8年前。那么,假设我有一个这样的标题:#ifndefBASECLASS_H#defineBASECLASS_HclassBaseClass{public:staticintgetX(){returnx;}private:staticintx;};intBaseClass::x=10;#endif我多次听说我不应该在header中初始化静态变量,而应该在cpp中初始化。但是因为有guard,所以应该只有一份BaseClass::x。所以我有点不明白为什么要放in

c++ - header 中定义的 C++ 类方法是否始终内联?

Edit:I'verestoredtheoriginaltitlebutreallywhatIshouldhaveaskedwasthis:'HowdoC++linkershandleclassmethodswhichhavebeendefinedinmultipleobjectfiles'假设我在头文件中定义了一个C++类:classKlass{intObnoxiously_Large_Method(){//manythousandsoflinesofcodehere}}如果我编译一些在多个位置使用“Obnoxiously_Large_Method”的C++代码,生成的目标文件是否始