[devel] -Werror приводит к ошибкам в системных хедерах

Ivan A. Melnikov =?iso-8859-1?q?iv_=CE=C1_altlinux=2Eorg?=
Пн Янв 5 15:33:05 MSK 2009


On Mon, 5 Jan 2009 15:36:54 +0600
"Slava Semushin" <slava.semushin на gmail.com> wrote:

> Здравствуйте!
> 
> Собираю новую версию mpdscribble. Включил --enable-werror и получаю:
[...]
> /usr/include/libsoup-2.4/libsoup/soup-session-feature.h:21: error:
> struct has no members

Это из-за опций gcc -pedantic-errors и/или -pedantic...

> 
> Решил обойти эту ошибку, включив только нужные программе хедеры вместо
> обобщающего soup.h
> 
> Далее:
> 
> In file included from /usr/include/sys/syslog.h:207,
>                  from /usr/include/syslog.h:1,
>                  from src/log.c:32:
> /usr/include/bits/syslog.h: In function 'syslog':
> /usr/include/bits/syslog.h:32: error: ISO C forbids 'return' with
> expression, in function returning void
> /usr/include/bits/syslog.h: In function 'vsyslog':
> /usr/include/bits/syslog.h:48: error: ISO C forbids 'return' with
> expression, in function returning void
> make[1]: *** [log.o] Ошибка 1
> 
> А тут как быть?
> 

Для меня это было сюрпризом, но действитедльно, в стандарте C99 пукт
6.8.6.4 параграф 1 запрещает return statement with an expression  в
function whose return type is void. Опять же, gcc обращает на это
внимание только с -pedantic{,-errors}.

JFI, в c++98  (пункт 6.6.3 параграф 3) и последующих (правда, посленего
драфта C++0x у меня под рукой нет) такоe разрешено. ЕМНИП такое можно
было и в C89.

> Не хотелось бы отключать -Werror флаг, к тому же очень похоже, что у
> апстримного автора всё собирается и с ним, а вот у нас почему-то нет.
> СтОит ли вешать баги на эти хедеры или.. что делать вообщем?
> 

Убирать -pedantic{,-errors}. Они ИМХО с -Werror не очень хорошо
сочетаются. Насчёт развешивания насекомых ничего не могу посоветовать.

> Спасибо за внимание.
> 

Пожалуйста.

-- 
Best Regards,
Ivan A. Melnikov



Подробная информация о списке рассылки Devel