GCC
Common Porting Problems and Fixes
sys/dirent.h
No Longer Includes Function Prototypes
Issue
Compilation errors may occur in code that previously worked with the old toolchain. For example:
#include <sys/dirent.h>
/* .... */
DIR* dir = opendir("test_dir");
/* .... */
/**
* Compile error:
* test.c: In function 'test_opendir':
* test.c:100:16: error: implicit declaration of function 'opendir' [-Werror=implicit-function-declaration]
* 100 | DIR* dir = opendir(path);
* | ^~~~~~~
*/
Solution
To resolve this issue, the correct header must be included. Refactor the code like this:
#include <dirent.h>
/* .... */
DIR* dir = opendir("test_dir");