类声明中的BOOST_FILESYSTEM_DECL是什么意思?

时间:2016-07-12 09:43:54

标签: c++ class boost

我找到了以下代码:

class BOOST_FILESYSTEM_DECL path
{

};

通常以这种方式定义一个类:

class Baloon 
{

};

我怎样才能在班级宣言中有两个条款?有人知道({1}}用于什么(升级库)?

4 个答案:

答案 0 :(得分:5)

如果你看一下how it is defined,一切都会清楚:

#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说明符的更多详细信息,请参阅this answer。简而言之,它是动态链接所需的平台特定功能。

答案 1 :(得分:4)

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

答案 2 :(得分:1)

这是一个宏;见here for the definition

它控制共享库(dll)中类的展示;在构建提升时,__declspec()基本上会成为dllexport(或类似,具体取决于平台),或者在客户端代码中使用dllimport

答案 3 :(得分:0)

BOOST_FILESYSTEM_DECL 可能是docs,寻找声明:

#define BOOST_FILESYSTEM_DECL 

看看它的意思。