c++中的独立冒号是什么?

What is a freestanding colon in C++

本文关键字:是什么 独立 c++      更新时间:2023-10-16

典型的Qt示例是:

class Counter : public QObject
{
    Q_OBJECT
    int m_value;
public:
    int value() const { return m_value; }
public slots:
    void setValue(int value);
signals:
    void valueChanged(int newValue);
};

Qt定义宏:

#define slots /* nothing */

预处理器运行后,我们将得到:

public slots:
  void setValue(int value);
:
  void valueChanged(int newValue);
};

独立冒号的作用是什么?我可以在任何地方加上冒号吗?

int main() {
:
std::cout << "hi";
:
return 0;
}

独立冒号在c++中做什么,为什么允许?

CC++中不允许有独立的:

signals定义为public,因此

signals:
    void valueChanged(int newValue);

将被预处理为

public:
    void valueChanged(int newValue);

没有自由冒号

现在插槽被定义为空,所以

public slots:
    void setValue(int value);

在注释被空白替换后,将被替换为(

public :
    void setValue(int value);