Задача
В CodeGear C ++ Builder 2009 мы используем предварительно скомпилированный заголовок, чтобы значительно сократить время компиляции. У нас один и тот же заголовочный файл, который внедряется в несколько проектов. При компиляции некоторых проектов компилятор выводит следующее предупреждение:
[BCC32 Warning] Dateutils.hpp(43): W8058 Cannot create pre-compiled header: initialized data in header
В этом примере Dateutils.hpp - это файл, на который он жалуется (заголовок CodeGear). Я видел, как это происходило с другими заголовками . Что делает это интересным, так это то, что это происходит только с некоторыми проектами (вводится тот же заголовок).
Раньше мне приходилось просто находить заголовок, который в конечном итоге включил этот ошибочный файл, и удалить его из моего предварительно скомпилированного заголовочного файла. Кто-нибудь знает, что здесь происходит, и лучший способ это исправить?
Обновление
В итоге я выполнил подход к процессу удаления заголовка файла и получил интересную находку, которую я не могу объяснить. Из 50+ заголовков, которые включены, когда я удалил vcl.h , я больше не получаю предупреждения W8058. Я не понимаю этого, так как представляю, что этот заголовочный файл, в частности, является основным кандидатом на предварительную компиляцию. Кто-нибудь может это объяснить?