Intel C Compiler не может использовать стандартные библиотеки lib (например, dirent.h) в Linux

107
9

У меня проблема с процессором Intel C Compiler icc, который отказывается распознавать некоторые стандартные библиотеки, такие как dirent.h. Мой код выглядит так:

#include <dirent.h>
...
DIR* dir = opendir(path);
...
readdir(dir);
dirent* entry = readdir(dir);
while(entry != NULL) {
...
entry = readdir(dir);
}

При попытке скомпилировать код я получаю следующую ошибку, даже если я явно добавлю -I/usr/include к команде:

icc -g -ipp=common -mkl=parallel -I/opt/intel/ipp/include -I"../include" -std=c99 -openmp -cilk-serialize -fpic -MMD -MP -MF"src/main.d" -MT"src/main.d" -c -o "src/main.o" "../src/main.c"
../src/main.c(85): error: identifier "dirent" is undefined
dirent* entry = readdir(dir);

GCC компилирует тот же код с любой проблемой - к сожалению, мне нужно скомпилировать мое приложение с ICC по другим причинам.

Я ценю ваш совет :)

спросил(а) 2013-12-02T14:48:00+04:00 6 лет, 11 месяцев назад
1
Решение
58

В языке C вы должны объявить переменные в начале блока C {}. Вы не можете переписывать декларации между инструкциями.

ответил(а) 2014-02-10T09:46:00+04:00 6 лет, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема