Проблема компиляции проекта C ++ с использованием Boost с Clang - PullRequest
1 голос
/ 09 августа 2011

Я решил попробовать Clang, скомпилировав мой проект на c ++, который уже компилируется в GCC. Мой проект использует Boost, и в результате включения «boost / asio.hpp» clang выдает следующую ошибку при компиляции с педантичным флагом:

lib/boost_1_46_1/mac/boost/date_time/date_generators.hpp:37:30: error: extra ';' 
inside a class [-pedantic]

Какие есть варианты, если я хочу, чтобы этот проект компилировался? Я предпочел бы не редактировать различные заголовки повышения, где возникает эта проблема.

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

Я только что заглянул внутрь заголовка, и проблемная строка - year_based_generator() {};, которая является тривиальным конструктором. Так что лязг правильный, а ; не нужен.

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

Вместо отключения -pedantic в целом вы можете использовать прагмы, чтобы отключить его только для проблемных библиотек повышения.

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-pedantic"
// include boost headers
#pragma clang diagnostic pop

Должен работать, я думаю.

0 голосов
/ 09 августа 2011

Вы даете лягушке вариант -педантика? Похоже, что -pedantic вызывает ошибку. Вы всегда можете просто удалить эту опцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...