struct ip_mreq исчезает при компиляции с -std = c99 - PullRequest
4 голосов
/ 19 мая 2009

В некоторых наших Linux-коробках при компиляции с gcc -std = c99 struct ip_mreq исчезает (входит в netinet / in.h)

Есть ли какой-то другой интерфейс, который мы должны использовать?

Ответы [ 3 ]

5 голосов
/ 21 мая 2009

Попробуйте --std = gnu99.

По умолчанию для GCC используется '--std = gnu89', что означает C89 с расширениями GNU. Выбрав «--std = c99», вы включаете C99, но отключаете расширения GNU. «--std = gnu99» выберет поддержку расширений C99 и GNU, предоставляя вам лучшее из обоих миров.

0 голосов
/ 21 мая 2009

У меня такая же проблема. Все прекрасно компилируется с использованием gcc, когда я не предоставляю "-std = c99", но когда включен флаг, компилятор не может сказать, что поле с типом "struct ip_mreq" "имеет неполный тип."

Это проблема, поскольку я зависим от некоторых функций C99.

0 голосов
/ 19 мая 2009

Я не думаю, что есть другой интерфейс pre-c99. Возможно, вы сможете использовать это с -std=c99, если добавите в начало списка ваших источников следующее:

#define __EXTENSIONS__

но лучше, наверное,

#define _XOPEN_SOURCE

Обратите внимание, что я не подтвердил.

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