Как я могу использовать каскадные пространства имен в файлах moc? - PullRequest
1 голос
/ 27 февраля 2011

В настоящее время я пишу небольшое приложение с Qt (4.7).И я использую вложенные пространства имен, такие как

namespace app {
    namespace core {
        class CoreClass {...}
    }
}

Поскольку я немного ленив, я использую символы для ярлыков, которые содержат объявления открытия и закрытия пространства имен:

APP_START
    class CoreClass {...}
APP_END

Символыопределены в глобальном заголовочном файле.

Пока все хорошо.Он прекрасно работает во время компиляции.Но когда генератор moc создает файлы moc, он пропускает объявления пространства имен, и методы генерируются в стандартном пространстве имен.Когда символы не используются, все работает нормально.

Когда я переопределяю символ QT_BEGIN_MOC_NAMESPACE, компилятор выдает предупреждение переопределения при каждом включении.Это действительно работает, но я думаю, что это не очень хорошо.

Есть ли лучшее решение для этой проблемы?

1 Ответ

0 голосов
/ 28 февраля 2011

Сначала я выясню, почему moc не выполняет подстановку макросов.Может быть, -I не так?

Во-вторых, вы можете попробовать параметр -D для moc.Может быть что-то вроде: moc "-DAPP_BEGIN = приложение пространства имен {ядро пространства имен {"

...