Как скомпилировать с --pedantic-ошибки на OS X? - PullRequest
2 голосов
/ 23 февраля 2010

Вот простой файл C:

#include <stdio.h>
#include <stdlib.h>

int
main() {
    printf("hi there!\n");
    return 0;
}

Компиляция с gcc -ansi -pedantic -pedantic-errors дает это:

In file included from /usr/include/i386/_structs.h:38,
             from /usr/include/machine/_structs.h:31,
             from /usr/include/sys/_structs.h:57,
             from /usr/include/sys/signal.h:154,
             from /usr/include/sys/wait.h:116,
             from /usr/include/stdlib.h:65,
             from test.c:2:
/usr/include/mach/i386/_structs.h:91: error: type of bit-field ‘__invalid’ is a GCC extension

С гораздо большим количеством ошибок о расширениях GCC. Я знаю, что мог бы просто удалить переключатель -pedantic-errors и перекомпилировать, но по одной и другой причине этого нет в картах. Есть ли способ обойти эту ошибку; возможно загрузка и установка другой библиотеки C? Я работаю локально над кодом, который нужно скомпилировать на удаленном компьютере, поэтому я не могу настроить Makefile, чтобы указывать, к сожалению, на специальную папку библиотеки.

1 Ответ

1 голос
/ 23 февраля 2010

Вы можете изменить /usr/include/mach/i386/_structs.h:91 для использования ключевого слова __ extension __ . Хотя вам придется задуматься, почему это не так.

Другим решением на уровне файлов является добавление директивы #pragma GCC system_header в начало _structs.h.

Чтобы исправить это на уровне сборки, добавьте -isystem /usr/include/mach/i386/ к параметрам компилятора. Все заголовки в этой папке будут затем включены, как если бы они были системными заголовками (что уже должно быть, но, очевидно, это не так).

...