类声明中的BOOST_FILESYSTEM_DECL是什么意思

What does BOOST_FILESYSTEM_DECL in class declaration mean?

本文关键字:FILESYSTEM DECL 是什么 意思 BOOST 声明      更新时间:2023-10-16

我找到了以下代码:

class BOOST_FILESYSTEM_DECL path
{
};

通常类是这样定义的:

class Baloon 
{
};

如何在类声明中有两个术语?有人知道BOOST_FILESYSTEM_DECL的用途(提升库)吗?

如果你看看它是如何定义的,一切都会很清楚:

#ifdef BOOST_HAS_DECLSPEC // defined in config system
// we need to import/export our code only if the user has specifically
// asked for it by defining either BOOST_ALL_DYN_LINK if they want all boost
// libraries to be dynamically linked, or BOOST_FILESYSTEM_DYN_LINK
// if they want just this one to be dynamically liked:
#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FILESYSTEM_DYN_LINK)
// export if this is our own source, otherwise import:
#ifdef BOOST_FILESYSTEM_SOURCE
# define BOOST_FILESYSTEM_DECL __declspec(dllexport)
#else
# define BOOST_FILESYSTEM_DECL __declspec(dllimport)
#endif  // BOOST_FILESYSTEM_SOURCE
#endif  // DYN_LINK
#endif  // BOOST_HAS_DECLSPEC
//
// if BOOST_FILESYSTEM_DECL isn't defined yet define it now:
#ifndef BOOST_FILESYSTEM_DECL
#define BOOST_FILESYSTEM_DECL
#endif

如您所见,它是一个宏。它扩展到__declspec(dllexport)__declspec(dllimport)或空,具体取决于其他宏。有关 declspec 说明符的更多详细信息,请参阅此答案。简而言之,动态链接需要特定于平台的功能。

实际上是一个计算结果为 __declspec(dllimport)__declspec(dllexport) 的宏,它基本上被 Boost 库用来告诉编译器导出(对于他们自己的代码)或导入(对于外部代码)。

它是一个宏;有关定义,请参见此处。

它从共享库(dll)控制类的公开;基本上,它将在构建boost时成为dllexport__declspec()(或类似,取决于平台),或者在客户端代码中使用时dllimport

BOOST_FILESYSTEM_DECL可能是一个宏,查找声明:

#define BOOST_FILESYSTEM_DECL 

看看它是什么意思。