C++中类的定义中的第三个单词

use*_*199 0 c++ class

所以最近我恢复了一个C++的源文件,因为我是初学者,我需要一些帮助:

//______________________________________________________________________

class ORBITDYN_API CMsise00
{
public:
    struct nrlmsise_input input;
    struct nrlmsise_flags flags;
    struct nrlmsise_output output;

public:
    CMsise00(void);
    ~CMsise00(void);

    //¼ÆËã´óÆøÃܶÈ
    double Density(const CDateTime& t,const Vector& ECFr);
};

ORBITDYN_VAR CMsise00 Msise;

//___________________________________________________________________________
Run Code Online (Sandbox Code Playgroud)
  1. CMsise00类声明中第三个单词的含义是什么?

  2. 对于结构的声明同样的问题input,flags,output

  3. 最后一句话的含义是什么, (ORBITDYN_VAR CMsise00 Msise;)它是另一种功能的召唤或者是什么?

rod*_*igo 7

ORBITDYN_API是最有可能的,要么扩展到没有或一些编译器特定的属性,可能是动态链接宏(__declspec(dllexport)也许?)

因此,您的代码应该被理解为:

class CMsise00
{
...
};
Run Code Online (Sandbox Code Playgroud)

现在很明显,这CMsise00是班级的名称.

和ditto一样ORBITDYN_VAR.

在Windows中编写DLL时,这些类是惯用的.问题是导出的函数,类或变量应该__declspec(dllexport)在编译DLL时声明,但是__declspec(dllimport)当链接到它时.一些预处理器魔术允许您在两种情况下使用相同的头文件.

啊! 我几乎忘记了结构的东西:

struct nrlmsise_input input;
Run Code Online (Sandbox Code Playgroud)

这只是一个名为inputtype 的变量struct nrlmsise.你可以写:

nrlmsise_input input;
Run Code Online (Sandbox Code Playgroud)

它会是一样的.前者在C++中被接受以与C兼容.在C中,您始终使用带有关键字的结构名称struct.