c++ 这个类声明格式是什么意思?

k5ifujac  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(141)

我可以分析一段代码,如下所示:

class DPD_API gain_phase_calibrate : virtual public gr::block
{
public:
    typedef boost::shared_ptr<gain_phase_calibrate> sptr;

    static sptr make();
};

从这段代码中,我了解到一个名为DPD_API的类正在被创建,并且它是从gr::block类继承的。我不明白的是gain_phase_calibrate。这是函数名还是类名?有人能给我解释一下吗?

qyzbxkaa

qyzbxkaa1#

代码片段声明了一个名为gain_phase_calibrate的API类,它继承自gr::block。这里,DPD_API是该类的可选属性,请参见class declaration on cppreference
DPD_API宏将扩展到平台和编译器特定的代码,这些代码控制类的可见性,即是否可以从库外部调用。
用简单的英语来说,这段代码是“这里有一个名为gain_phase_calibrate的类,如果使用这个库,可以从代码中调用它”。
这些宏在C++库中很常见,通常称为FOO_EXPORTFOO_API(如本例所示)。
过去,*NIX上的共享对象使所有符号可见,而微软的DLL只暴露那些带有__declspec(dllexport)宏的符号。同时,选择性地暴露API符号也在 *NIX上流行起来。
GCC wiki on Visibiliy中可以找到GCC的一个很好的总结(以及与Windows上的情况的比较)。它还提供了一些与问题中的示例代码类似的示例代码。

相关问题