forward declaration в одном файле
От: MTD https://github.com/mtrempoltsev
Дата: 25.01.14 07:38
Оценка:
Пишу утилиту для генерации кода и мне было бы удобно все типы сделать forward declaration в одном файле, а в заголовочных файлах подключать этот файл (по определению, все типы в заголовочных файлах — указатели, наследования нет). Какие могут быть подводные камни?
Re: forward declaration в одном файле
От: MT-Wizard Украина  
Дата: 25.01.14 19:59
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Пишу утилиту для генерации кода и мне было бы удобно все типы сделать forward declaration в одном файле, а в заголовочных файлах подключать этот файл (по определению, все типы в заголовочных файлах — указатели, наследования нет). Какие могут быть подводные камни?


Никаких, сам так делаю, причём в неавтогенерённом коде.
А ти, москалику, вже приїхав (с)
Re: forward declaration в одном файле
От: Vain Россия google.ru
Дата: 25.01.14 20:05
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Пишу утилиту для генерации кода и мне было бы удобно все типы сделать forward declaration в одном файле, а в заголовочных файлах подключать этот файл (по определению, все типы в заголовочных файлах — указатели, наследования нет). Какие могут быть подводные камни?

неполучится форвардить типы в классах.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Re: pch? [offtop]
От: SaZ  
Дата: 29.01.14 08:21
Оценка:
Здравствуйте, MTD, Вы писали:

MTD>Пишу утилиту для генерации кода и мне было бы удобно все типы сделать forward declaration в одном файле, а в заголовочных файлах подключать этот файл (по определению, все типы в заголовочных файлах — указатели, наследования нет). Какие могут быть подводные камни?


Использую PCH (для Qt) и не заморачиваюсь. Примерно так:
  Скрытый текст
#ifndef COMMON_PCH_H
#define COMMON_PCH_H

#ifdef Q_OS_WIN
# define _WIN32_WINNT 0x0501
#endif

#ifdef QT_CORE_LIB
# include <QtCore>
#endif

#ifdef QT_GUI_LIB
# include <QtGui>
#endif

#ifdef QT_MULTIMEDIA_LIB
# include <QtMultimedia>
#endif

#ifdef QT_NETWORK_LIB
# include <QtNetwork>
#endif

#ifdef QT_XML_LIB
# include <QtXml>
#endif

#ifdef QT_QML_LIB
# include <QtQml>
#endif

#ifdef QT_QUICK_LIB
# include <QtQuick>
#endif

#endif // COMMON_PCH_H

Очень существенно ускоряет сборку в msvc. Плюс упрощает написание кода. В Qt очень часто используется forward declaration и порой напрягает каждый раз бегать в начало файла и вписывать туда нужный инклюд. А потом и подчищать ненужные инклюды.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.