Препроцессор: ошибка: пропущен двоичный оператор перед токеном "(" - PullRequest
1 голос
/ 29 января 2020

мы в настоящий момент работаем над проектом C, и мы скачали и использовали заголовок dirent.h , проблема в код был успешно скомпилирован на моем ноутбуке по команде, но в мой он не компилируется , говоря мне это:

    In file included from utils.c:6:0:
dirent.h: In function '_wopendir':
dirent.h:383:28: error: missing binary operator before token "("
 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
                            ^
dirent.h:405:28: error: missing binary operator before token "("
 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
                            ^
dirent.h:413:5: warning: implicit declaration of function 'wcsncpy_s' [-Wimplicit-function-declaration]
     wcsncpy_s (dirp->patt, n+1, dirname, n);
     ^

Я искал проблему и обнаружил, что это ошибка препроцессора, и в настоящее время #if я пытался добавить #define WINAPI_FAMILY_PARTITION (Разделы) но это не работает.

Пожалуйста, предложите мне решение для успешной компиляции, и влияет ли версия windows на предварительную обработку?

1 Ответ

2 голосов
/ 29 января 2020

WINAPI_FAMILY_PARTITION определено в <winapifamily.h>, возможно, включено <windows.h>. Посмотрите на этот вопрос для получения дополнительных объяснений, но windows тонкости в значительной степени не имеют отношения к вашей проблеме компиляции. Возможно, вы захотите включить <windows.h> до <dirent.h>?

Вы не опубликовали sh исходный код вашей программы, и при этом вы не указали, какую ОС вы компилируете, не какой компилятор вы используете, но вы упоминаете мы скачали и использовали заголовок dirent.h ... Это звучит неправильно: системные включаемые файлы, такие как <dirent.h>, автоматически устанавливаются вместе с компилятором, они указываются c для ОС и компилятора вы не можете просто загрузить его с net и ожидать, что он будет работать в вашей системе. Это может сработать случайно на P C вашего партнера по команде, потому что ОС может отличаться.

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