Ошибка при включениив предварительно скомпилированном заголовочном файле iOS - PullRequest
1 голос
/ 11 апреля 2011

Я разрабатываю приложение для iOS и использую shared-указатель из библиотеки Boost. Мое приложение немного коренастое, поэтому я пытался его поднять. Я думаю, что перемещение этой строки:

#include <boost/shared_ptr.hpp>

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

Когда я перемещаю эту строку в файл pch, я получаю массу ошибок во время компиляции, большинство из которых:

error: expected '=', ',', ';', 'asm' or '__attribute__' before 'boost'

Я изменил файл .pch на файл sourcecode.cpp.h, но это не помогло.

Мысли

РЕДАКТИРОВАТЬ: Только что проверил, что на самом деле есть дубликаты скомпилированного shared_ptr в моем двоичном файле!

Ответы [ 2 ]

1 голос
/ 31 января 2012

Возможно, в вашем проекте есть источники C или ObjC.

В этом случае:

#if defined(__cplusplus)
#include <boost/shared_ptr.hpp>
#endif

Xcode (по умолчанию) создает префикс для каждого языка / диалекта в вашем проектеа если нет, то все равно вручную #include d.К сожалению, перемещение заголовка в pch может только добавить дубликатов.Однако это может сократить время сборки.

1 голос
/ 31 января 2012

Включены ли заголовки повышения в файл .m или .mm? Потому что в первом случае компилятор будет использовать Objective-C, во втором - Objective-C ++.

...