3

我正在尝试在 Linux 上编译我的代码并创建了一个简单的 make 文件。在我的一个标题中,有一个编译时条件 #include 用于模拟 Unix 的 dirent.h 的文件。

我把这个包含在 a#if defined(_WIN32) || defined(_WIN64)中,但是 g++ 很高兴地包含了这个文件,这导致了无穷无尽的错误。

整个区块看起来像这样:

#if defined(_WIN32) || defined(_WIN64) 
#include "dirent.h"
#define strncasecmp _strnicmp 
#else
#include <unistd.h>
#include <dirent.h>
#include <fcntl.h>
#include <sys/types.h>
#include <utime.h>
#endif

发生这种情况有什么明显的原因吗?

4

1 回答 1

3

所以,鉴于评论:不要调用你的“兼容性标题” "dirent.h",而是像"dirent_compat.h"or "dirent_win.h"

或者,不要将当前目录添加到系统包含的包含路径(<...>无论如何,您确实不应该在当前目录中包含包含)

于 2013-11-14T12:32:11.543 回答