3

我在许多项目中看到一些程序员在他们的代码中使用//! [1], //! [2], ...,//! [n]但我不知道这可能意味着什么。

如果有人指出这些评论的用途,我将不胜感激。这是一个狙击代码:

BlockingClient::BlockingClient(QWidget *parent)
    : QWidget(parent)
{
    hostLabel = new QLabel(tr("&Server name:"));
    portLabel = new QLabel(tr("S&erver port:"));


    QString ipAddress;
    QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses();
    // use the first non-localhost IPv4 address
    for (int i = 0; i < ipAddressesList.size(); ++i) {
    }
    // if we did not find one, use IPv4 localhost
    if (ipAddress.isEmpty())
        ipAddress = QHostAddress(QHostAddress::LocalHost).toString();

    //...
    connect(hostLineEdit, SIGNAL(textChanged(QString)),
            this, SLOT(enableGetFortuneButton()));
    connect(portLineEdit, SIGNAL(textChanged(QString)),
            this, SLOT(enableGetFortuneButton()));
//! [0]
    connect(&thread, SIGNAL(newFortune(QString)),
            this, SLOT(showFortune(QString)));
//! [0] //! [1]
    connect(&thread, SIGNAL(error(int,QString)),
            this, SLOT(displayError(int,QString)));
//! [1]

    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->addWidget(hostLabel, 0, 0);
    setLayout(mainLayout);

    setWindowTitle(tr("Blocking Fortune Client"));
    portLineEdit->setFocus();
}

//! [2]
void BlockingClient::requestNewFortune()
{

    getFortuneButton->setEnabled(false);
    thread.requestNewFortune(hostLineEdit->text(),
                             portLineEdit->text().toInt());
}
//! [2]

//! [3]
void BlockingClient::showFortune(const QString &nextFortune)
{
    if (nextFortune == currentFortune) {
        requestNewFortune();
        return;
    }
//! [3]

//! [4]
    currentFortune = nextFortune;
    statusLabel->setText(currentFortune);
    getFortuneButton->setEnabled(true);
}
//! [4]
4

2 回答 2

8

我只是猜测,因为您没有显示更完整的代码(或者在这种情况下更完整的评论)。

Doxygen是一个文档生成器,可以解析特定格式的代码声明和注释。如果您阅读手册的这一部分,您会发现它被识别//!为包含文档的特殊注释。Doxygen 支持在方括号内有链接的降价。

所以这与实际代码无关,只是为了帮助记录它。而且它肯定不是编译器会尝试为其生成代码的语句。

于 2013-04-16T08:12:03.823 回答
1

这些只是评论。它们在 C 或 C++ 中没有特殊含义。它们可能在某些其他上下文中具有某些特殊含义,或者它们可能只是该项目的评论约定。

于 2013-04-16T11:14:49.897 回答