草庐IT

header_remove

全部标签

c++ - boost :什么是 "convenience header"?

boost中的“header”和“convenienceheader”有什么区别? 最佳答案 便利header通常(不仅仅是在Boost中)是一个包含许多其他header(包含实际代码)的header,这些header通常一起使用,即使它们之间没有硬依赖关系(这就是为什么它们'首先重新分开)。 关于c++-boost:什么是"convenienceheader"?,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

c++ - 仅 header 链接

许多C++项目(例如,许多Boost库)是“仅header链接”。在普通C中这也可能吗?如何将源代码放入标题中?有没有关于它的网站? 最佳答案 执行摘要:可以,但不应该。C和C++代码在编译之前被预处理:所有header都被递归地“粘贴”到包含它们的源文件中。如果您在头文件中定义了一个函数,并且它被两个C文件包含,那么您将在每个目标文件中得到两个拷贝(OneDefinitionRule违规)。如果您的所有函数都标记为static,即在翻译单元外不可见,则您可以创建“仅header”C库。但这也意味着您将获得包含头文件的每个翻译单元中

c++ - Mac OS X Mavericks 上的 libc++ header 在哪里?

我想看一下标题并想知道它们在哪里。 最佳答案 安装Xcode后,它位于此处:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/c++/v1MacOSX10.9+不再使用GCC/libstdc++,而是使用libc++和Clang。更新:在XCode6.0.1更新之后,header现在位于此处:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeD

C++ header - 接口(interface)和实现细节之间的分离

我程序中的一个类使用了一些第三方库。库对象是我类(class)的私有(private)成员://My.h#includeclassMy{...private:3pObjectm_object;}这个问题-我的程序中使用我的类的任何其他单元都应该配置为包含3pheader。转向另一种3p将危及整个构建...我看到有两种方法可以解决这个问题——一种是让3pObjectextern并将m_Object变成一个指针,在构造函数中初始化;其次是创建“接口(interface)”和“工厂”类并导出它们...您能建议另一种解决方法吗? 最佳答案

C++ header - 包含时的最佳实践

C++header如果我有A.cpp和A.h以及b.h、c.h、d.h我应该怎么做:在A.h中:#include"b.h"#include"c.h"#include"d.h"在A.cpp中:#include"A.h"或在A.cpp中:#include"A.h"#include"b.h"#include"c.h"#include"d.h"是否存在性能问题?明显的好处?这有什么不好的吗? 最佳答案 你应该只包含编译所必需的;添加不必要的包含会缩短编译时间,尤其是在大型项目中。每个头文件都应该能够自己干净地编译——也就是说,如果您有一个只

c++ - 如果我在 header 中声明 namespace ,是否可以避免在 .cpp 文件中使用类名?

这个问题在这里已经有了答案:C++:"Classnamespaces"?[duplicate](4个答案)关闭9年前。在C++中,我只想在.h文件中声明一个DisplayInfo类,然后在.cpp文件中,不必键入第一个DisplayInfo::DisplayInfo()和每个函数定义。遗憾的是,我已经查看了20多个主题和我的C++书籍两个多小时,但仍无法解决这个问题。我认为这是因为我正在尝试在C++中使用我10年的Java培训。第一次试验://DisplayInfo.hnamespaceDisplayInfoNamespace{ClassDisplayInfo{public:Displ

c++ - C++11 <codecvt> header 在最新的 GCC 中可用吗?

看完Isnotastandardheader?我不确定该怎么做,因为我的Windows版本的代码库使用在宽字符串和字符串之间进行转换。我目前在我的代码的Linux版本中使用GCC4.7。是在最新的GCC中也丢失了吗?有什么解决方法?顺便说一句,正如它所说的here以下代码不适用于GCC:wstringws=L"hello";stringns(ws.begin(),ws.end()); 最佳答案 使用mbsrtowcs和wcsrtombs怎么样?尽管它们来自C,但与std::string和std::wstring一起使用不是很方便(但

c++ - header 未刷新 - Visual C++ 2012

使用VisualC++2012,没有预编译头文件:当我更改包含在多个文件中的头文件时,构建时不会考虑更改。如果我重建所有,更改将被考虑在内。复现案例:include.h#ifndefINCLUDE_H_#defineINCLUDE_H_classA{public:A(inti):i_(i){}inti_;};classB{public:B(inti=1):a_(i){}Aa_;};#endifINCLUDE_H_虚拟.cpp#include"include.h"main.cpp#include#include"include.h"intmain(int,char**){Bb;std::

c++ - 可选的仅 header 库

我想编写一个C++库,默认情况下not-header-only但可以用作定义NOLIB宏的仅header库。我见过两种方法:内联定义foo.h#if!defined(FOO_H)#defineFOO_H#ifdefined(NOLIB)#defineMYINLINEinline#else#defineMYINLINE#endifclassfoo{//...};#ifdefined(NOLIB)#include"foo.cc"#endif#endif//includeguardfoo.cc#if!defined(NOLIB)#include"foo.h"#endifMYINLINEvoi

c++ - 在仅 header 库的类定义中实现有什么不同?

我正在开发一个大量使用模板的库,因此我决定将其设为仅包含header的库。由于声明和实现在同一个文件中,我现在可以同时进行。所以我可以在这两种风格之间做出选择://seperatedeclarationandimplementationtemplateclassKlass{public:voiddo_something();};templatevoidKlass::do_something(){//dosomething}//orbothatthesametimetemplateclassKlass{public:voiddo_something(){//dosomething}};我