Russian Qt Forum

Программирование => С/C++ => Тема начата: merke от Август 10, 2010, 20:37



Название: Макросы
Отправлено: merke от Август 10, 2010, 20:37
Всем привет!

Назрел вопрос. Объясните кто нибудь предназначение макросов в кутях. На примере следующего куска кода:

Код:
#ifndef QT_NO_PRINTER
    QPrinter printer(QPrinter::HighResolution);
    QPrintDialog *dlg = new QPrintDialog(&printer, this);
    if (textEdit->textCursor().hasSelection())
        dlg->addEnabledOption(QAbstractPrintDialog::PrintSelection);
    dlg->setWindowTitle(tr("Print Document"));
    if (dlg->exec() == QDialog::Accepted) {
        textEdit->print(&printer);
    }
    delete dlg;
#endif

Как интерпретировать такую конструкцию:

Код:
#ifndef QT_NO_PRINTER
.............
#endif

Буду очень рад помощи!

С уважением, Александр!


Название: Re: Макросы
Отправлено: BRE от Август 10, 2010, 20:56
Эээ...
Любая книга по языку программирования C/C++, глава про препроцессор. К Qt это не имеет никакого отношения.


Название: Re: Макросы
Отправлено: merke от Август 10, 2010, 21:12
Спасибо. Но а все же как по логике проговорить:

ЕСЛИ QT_NO_PRINTER ТО

ТУТ КОД

КОНЕЦ


Название: Re: Макросы
Отправлено: crossly от Август 10, 2010, 21:13
а что касается конкретно QT_NO_PRINTER.... то он определен когда Qt собрана без поддрежки печати...


Название: Re: Макросы
Отправлено: BRE от Август 10, 2010, 21:14
Спасибо. Но а все же как по логике проговорить:

ЕСЛИ QT_NO_PRINTER ТО

ТУТ КОД

КОНЕЦ
Если не определен QT_NO_PRINTER
...
Конец


Название: Re: Макросы
Отправлено: lit-uriy от Август 11, 2010, 02:19
ifndef FOO - if not defined FOO

есть ещё и такой вариант:
if !defined FOO


Название: Re: Макросы
Отправлено: merke от Август 11, 2010, 06:55
Всем спасибо! Въехал!