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

sup*_*e92 1 c++ boost class

我找到了以下代码:

class BOOST_FILESYSTEM_DECL path
{

};
Run Code Online (Sandbox Code Playgroud)

通常以这种方式定义类:

class Baloon 
{

};
Run Code Online (Sandbox Code Playgroud)

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

eer*_*ika 5

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

#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
Run Code Online (Sandbox Code Playgroud)

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