这个额外的关键字在这个 c++ 类声明中是什么意思?

What does this extra keyword mean in this c++ class declaration?

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

我正在查看一些声明如下类的C++代码:

class LIBSBML_EXTERN LayoutModelPlugin : public SBasePlugin

LIBSBML_EXTERN关键字有什么用?

这是一个宏。我不确定您正在使用什么库,但很可能是带有定义的宏,您可以在此处看到:https://github.com/copasi/copasi-dependencies/blob/master/src/libSBML/src/sbml/common/extern.h

#if ( ! defined LIBSBML_STATIC )
/**
* The following ifdef block is the standard way of creating macros which
* make exporting from a DLL simpler. All files within this DLL are
* compiled with the LIBSBML_EXPORTS symbol defined on the command line.
* This symbol should not be defined on any project that uses this
* DLL. This way any other project whose source files include this file see
* LIBSBML_EXTERN functions as being imported from a DLL, wheras this DLL
* sees symbols defined with this macro as being exported.
*
* (From Andrew Finney's sbwdefs.h, with "SBW" replaced by "LIBSBML" :)
*/
#if defined(LIBSBML_EXPORTS)
#  define LIBSBML_EXTERN __declspec(dllexport)
#else
#  define LIBSBML_EXTERN __declspec(dllimport)
#endif
#else
#  define LIBSBML_EXTERN
#endif  /* LIBSBML_STATIC */

如果需要,它用于将类定义与 DLL 接口。

它是一个宏,你可以这样定义:

#define LIBSBML_EXTERN whatever

其中whatever是编译器在编译之前放置的LIBSBML_EXTERN