Важно ли объявлять пространство имен с помощью QT_BEGIN_NAMESPACE.. QT_END_NAMESPACE

Каков эффект QT_BEGIN_NAMESPACE?

QT_BEGIN_NAMESPACE
class QLineEdit;
QT_END_NAMESPACE

Если я не использую объявление класса, как это, возникнет ли какая-либо проблема?

Ответ 1

QT_BEGIN_NAMESPACE и QT_END_NAMESPACE являются макросами препроцессора, и они определены в QtGlobal как:

#define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {
#define QT_END_NAMESPACE }

Но: эти два макроса имеют какой-либо эффект, когда Qt был сконфигурирован и построен с использованием параметра -qtnamespace, который позволяет вам создавать Qt внутри пользовательского пространства имен.

Итак: если вы не используете (или планируете использовать) библиотеку Qt, которая была построена таким образом (по умолчанию библиотека Qt находится в глобальном пространстве имен), опустив QT_BEGIN_NAMESPACE и QT_END_NAMESPACE won ' t приводит к любым проблемам.