草庐IT

kernel-headers

全部标签

c++ - iostream header 与 iostream 类

如果有一个文件foo.cpp,那么它通常有一个关联的头文件foo.h,其中包含foo.cpp中定义的函数的所有声明。这样,所有其他使用foo.cpp中的函数的文件都可以只包含foo.h文件并使用它们。以上就是我对头文件的简单理解。但是,我没有看到iostream头文件和iostream类之间存在这种关系。iostream头文件只声明了几个外部变量,但它们似乎都与iostream类没有直接关系。iostream类似乎也没有声明任何新函数。为什么我们会有iostream类和iostream头文件?如果我听起来很困惑,我深表歉意,但这件事真的让我很困惑。 最佳答案

c++ - 在 Eclipse 中,如何定义 C++ 的标准路径包含 header ?

我使用EclipseIDE编写我的C++项目。每当我开始一个新项目时,我都必须定义所有包含路径。有没有办法让我定义一组必须包含在所有项目中的标准header路径? 最佳答案 这是如何在工作区之间获取设置在你的旧(工作)项目中执行文件/导出...C/C++项目设置并给它一个要写入的文件在您的新工作区中执行文件/导入...C/C++项目设置并选择您的文件这也适用于您可能拥有的所有其他自定义设置,例如键绑定(bind)。 关于c++-在Eclipse中,如何定义C++的标准路径包含header

c++ - VS2013 : How to disable warnings for included header files outside of the project

在我的项目中,我包含了一个由外部库提供的头文件。使用/W3,所有内容都可以在没有警告的情况下编译。但是,我希望我的项目能够使用/W4进行干净地编译。这对我的代码来说没有问题,但外部header会发出大量警告。我知道我可以做这样的事情:#pragmawarning(push)#pragmawarning(disable:####)//includehere#pragmawarning(pop)但是有一长串要禁用的警告。有没有一种方法可以在包含此header时将警告级别设置回/W3,同时仍使用/W4编译我的其余代码?谢谢! 最佳答案 #

c++ - 铛 libTooling : How to find which header an AST item came out of?

在网上找到的clang工具示例总是在玩具示例上运行,这些示例通常都是非常简单的C程序。我正在构建一个对C++代码执行源到源转换的工具,这显然是一项非常非常具有挑战性的任务,但clang可以胜任这项任务。我现在面临的问题是,clang为任何使用STL的C++代码生成的AST非常庞大。例如,我有一些C++代码,clang++-ast-dump...|wc-l是67,018行可怕的AST官话!其中99%是标准库的东西,我打算在我的源到源元编程任务中忽略它们。所以,为了实现这一点,我想简单地过滤掉文件。假设我只想查看正在分析的项目header中的类定义(并忽略所有标准库header的内容),我

c++ - VS2013 - 多次包含同一 header 时出错

在将项目从VisualStudio2005移植到2013时,我遇到了这种我无法找到解释的奇怪行为。上下文是关于通过多次包含某个头文件来创建模板特化,但在每次包含之前更改预处理器定义以基本上生成不同的类声明。我可以将问题缩小为以下情况:gen.hpp#ifdefENABLE_GEN#ifdefGEN_SWAP_ORDER//(1)classFoo{};#elseclassBar{};#endif#endifmain.cpp#defineENABLE_GEN#include"gen.hpp"#defineGEN_SWAP_ORDER#include"gen.hpp"intmain(){Fo

c++ - header 中的枚举导致过度重新编译

JohnLakosreferstothisproblemasaninsidioussourceofcompile-timecoupling(Figure0-3,inhisIntroduction):我面临的问题是编译了太多文件,因为对单个枚举存在物理依赖性。我有一个带有枚举定义的header://version.henumVersion{v1=1,v2,v3,v4,v5,...v100};这被数百个文件使用。每个文件定义一类对象,必须从磁盘读取,使用read()功能。Version用于确定数据的读取方式。每次引入新的类或类成员时,都会将新条目附加到枚举中//typeA.cpp#incl

linux kernel 内存踩踏之KASAN_SW_TAGS(二)

一、背景linuxkernel内存踩踏之KASAN(一)_kasan版本跟hasan版本区别-CSDN博客上一篇简单介绍了标准版本的KASAN使用方法和实现,这里将介绍KASAN_SW_TAGS和KASAN_HW_TAGS的使用和背后基本原理,下图是三种方式的对比:OverheadtypeMTEKASAN_SW_TAG(kernel)/HWASan(userspace)KASAN(kernel)/ASan(userspace)RAM3%-5%10%-35%~2xCPU0%-5%~2x~2xCodesize2%-4%40%-50%50%-2x上表数据来源google的userspace下MTE、

c++ - C 和 C++ header : Define global struct inside of another struct

我有一些C代码,其中有一些结构如下所示:typedefstructmy_library_a_tmy_library_a_t;typedefstructmy_library_b_tmy_library_b_t;typedefstructmy_library_c_tmy_library_c_t;structmy_library_a_t{structmy_library_b_t{intdata;structmy_library_c_t{intdata;}c;}b;intdata;};这在C++中不起作用,因为在C中structmy_library_b_t定义了一个全局structmy_lib

c++ - 有没有办法包含 std::filesystem 的转发 header ?

与iostreams具有forward-includeheader的方式相同#include一个只有声明的header,我认为文件系统也会有一个。但是我找不到。我有一个类用filesystem::pathconst&声明了一个成员函数作为论点,把整个#include都带进来似乎有点矫枉过正。只是为了得到path.#include//or#include...structA{...voidsave(std::experimental::filesystem::pathconst&p);} 最佳答案 有这样的标题吗?没有。你能做这样的标

c++ - SCons、Boost::ASIO、Windows 预编译 header 和链接器错误

在为多个平台开发C++时,我正在研究在构建过程中使用SCons。我在构建配置中完成了99%,但我在Windows上遇到了一个非常奇怪的错误,该错误与预编译头文件有关。更奇怪的是,它只发生在一个项目上。在这个项目的SConscript文件中,我有以下内容可以在Windows上编译PCH:ifenv['PLATFORM']=='win32':env['PCH']=env.PCH('MyPCH-LSCommon.pch','Common/src/MyPCH.h')[0]env['PCHSTOP']='"MyPCH.h"'我还设置了编译器标志以强制在项目中的所有文件中包含MyPCH.h:ife