Отображение содержимого строки 792 из /usr/include/unistd.h
позволит лучше угадать ответ.
Обычно эта ошибка возникает из-за что-то , что вы #include
до unistd.h
использовали конфликтующий #define
Например, если строка 792 из unistd.h
гласит:
extern int link (const char *__from, const char *__to);
и какой-то предыдущий заголовок сделал это:
#define link 1
тогда компилятор увидит (после предварительной обработки):
extern int 1 (const char *__from, const char *__to);
и будет по праву производить error: expected an identifier
.
Полезный способ диагностики подобных проблем - запуск препроцессора и для сохранения значений всех #define
с. С GCC:
gcc -E -dD -I... foo.c > foo.e
Подобные флаги (-E -dD
) могут работать для nvcc
, или вам, возможно, придется найти что-то эквивалентное.
Обновление:
Как заметил Роберт Кровелла, у вас на самом деле есть -Dlink
в командной строке, поэтому вполне вероятно, что ваш unistd.h
совпадает с моим, а extern int 1 (const char ...
равен точно как ваш компилятор видит после предварительной обработки.
Не делать это ! То есть не #define
стандартные идентификаторы (ни в командной строке, ни где-либо еще в вашем коде).