草庐IT

C-Header

全部标签

c++ - 用于将实现与 .h 文件中的 header 分开的脚本

有时,在处理小类时,将实现分离到一个.cpp文件中是一件很痛苦的事情,所以我将所有代码都放在头文件中(children,不要这样做)。但是,最终这些类会变得越来越大,我必须做出一开始没有做的分离。事实是,这是一个机械过程,可以通过脚本或类似的东西完美地完成,我确定已经有人想到了这一点。那么,您是否知道有任何脚本可以获取一个.h文件,实现了所有函数体,然后返回一个剥离的.h文件和一个很好地填充的.cpp文件? 最佳答案 我也对此感到内疚-虽然我以前从未真正考虑过自动拆分,因为通常有相关的项目和测试文件要触及。不过,将其自动化的想法很有

c++ - 一个自动分离 C++ header 和 implementation 的工具

从C#或者python切换回C++遇到.h和.cpp分离的时候总是很痛苦。所以我想也许有一种工具可以在预编译步骤中获取header(o具有某些特殊扩展名的文件)并将其拆分为.h和.cpp?所以如果原始文件是这样的:classMyClass{public:voidHaHaHa(){//somelogic}}结果将是.h和.cpp文件://.hclassMyClass{public:voidHaHaHa();}//.cpp#include"MyClass.h"voidMyClass::HaHaHa(){//somelogic}一些谷歌搜索没有显示现成的工具。但我很确定这不是一个新想法,这样

c++ - 首选包含 std::size_t 的 header

std::size_t在以下任何一个中定义:因为只得到std::size_t而被认为是“犹太洁食”? 最佳答案 因为这是C库的一部分,我认为C标准指定的header是正确的:stddef.h,即cstddef.来自C11:7.19CommondefinitionsTheheaderdefinesthefollowingmacrosanddeclaresthefollowingtypes.Somearealsodefinedinotherheaders,asnotedintheirrespectivesubclauses.[...]s

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++ - 什么时候在一个文件中多次包含相同的 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