下载的一个 demo 程序,应该是没有问题的,然而导入了 VS2015 之后,编译始终报错
比如这样的代码:
#ifndef _WIN_POLL_H
#define _WIN_POLL_H
#define POLLIN 0x001
#define POLLPRI 0x002
#define POLLOUT 0x004
struct pollfd
{
int fd; // File Descriptor to poll
short int events; //Types of events poller takes care about
short int revents; //Types of events that actualy occured
};
#endif
编译之后 POLLIN POLLPRI POLLOUT struct pollfd 全都报宏重定义的错,并且我全局搜索也并没有搜索到有重定义的地方
有过经验的同学来告诉下咋回事?
1
Neveroldmilk 2016-03-02 08:27:24 +08:00 1
你自己在 POLLIN 、 POLLPRI 和 POLLOUT 前面再加个#ifdef 检测不就完了。
|
2
kevinzhwl 2016-03-02 09:48:47 +08:00 via iPhone
不在工程内的文件,可以被 include 但不能被搜索到。
|
3
autulin OP @Neveroldmilk 你是说再次检测 POLLIN 这样的宏定义有无被定义吗?那这个跟开头的#ifndef _WIN_POLL_H #define _WIN_POLL_H 有什么区别呢?
|
5
hitmanx 2016-03-02 13:17:49 +08:00 1
POLLIN 应该是在系统的 poll.h 里定义了,你工程里又重新定义了.解决方法同 1 楼
./incs/libusbi.h:#include <poll.h> ./incs/os.h:#include <sys/poll.h> |
6
autulin OP |