Я пытаюсь скомпилировать этот код, который отлично работает в Windows, в Linux (Code :: Blocks):
/* Edit: Includes */
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <...>
/**/
/* === */
/* Function code */
DIR *dp;
dirent *ep;
string name_parent;
dp = opendir(somepath);
name_parent = dp->dd_name; //error
/**/
Поскольку имена путей в Windows не чувствительны к регистру, я могу прочитать пользовательский ввод, например, «c: // program files», и получить «правильный» путь «C: \ Program Files *» (за исключением звездочки - или "F: //" -> "F: *"). Я также использую эту переменную для получения списка каталогов с абсолютными значениями пути, поскольку ep-> d_name (после некоторого readdir (), конечно) возвращает путь относительно somepath.
В Linux я получаю ошибку компилятора (для "dp-> dd_name"):
ошибка: недопустимое использование неполного типа 'DIR'
Я что-то забыл?
Или есть логическая ошибка?
Редактировать : я добавил включенные (которые я уже использую) выше.