CMU pocketsphinx на Mac: GCC бросая ошибки в stdio.ч

Я установил последнюю версию sphinxbase и pocketsphinx на свой mac. На сайте КМУ
они предоставили простой код hello world для проверки правильности установки. Код выглядит так:

#include <pocketsphinx.h>

int main(int argc, char *argv[])
{
    ps_decoder_t *ps = NULL;
    cmd_ln_t *config = NULL;

    config = cmd_ln_init(NULL, ps_args(), TRUE,
             "-hmm", MODELDIR "/en-us/en-us",
             "-lm", MODELDIR "/en-us/en-us.lm.bin",
             "-dict", MODELDIR "/en-us/cmudict-en-us.dict",
             NULL);

    return 0;
}

и я должен ввести эту команду ниже, чтобы скомпилировать с помощью GCC

gcc -o hello_ps hello_ps.c 
-DMODELDIR="`pkg-config --variable=modeldir pocketsphinx`" 
`pkg-config --cflags --libs pocketsphinx sphinxbase`

где pkg-config позаботится о путях включения и библиотеки.

Но компиляция возвращает следующие ошибки в stdio.H файл (pocketsphinx.h включает stdio.ч.)

Restrict requires a pointer or reference (int is invalid)

в нескольких местах и также

Unknown typename _FILE (Expanded from macro 'FILE')

Я прошел stdio.H файл и нашел эти соответствующие утверждения, и я понятия не имею, что он делает. Я понимаю, что ключевое слово restrict не является частью стандарта C++, но даже при компиляции с c99 он все равно выдает ту же ошибку. Любая помощь будет высоко оценена.

1 ответ

  1. Согласно журналу у вас есть дополнительный файл/usr/local/include/stdio.h, который не является стандартным include-файлом. Этот файл был установлен некоторыми другими программами и вызывает проблемы.

    Необходимо удалить проблемные stdio.h (и, вероятно, другие дополнительные заголовки) из вашей системы.

    Правильно stdio.h находится внутри /usr/include folder.