奇怪的#define 求解?解决方案
奇怪的#define 求解?
#define ev_tstamp double
struct ev_loop
{
ev_tstamp ev_rt_now;
#define ev_rt_now ((loop)->ev_rt_now)
#define VAR(name,decl) decl;
#include "ev_vars.h"
#undef VAR
};
#include "ev_wrap.h"
/////////////////////////////////////
//相关的头文件:
//头文件"ev_vars.h"如下:
#define VARx(type,name) VAR(name, type name)
VARx(int, backend_fd)
VARx(ev_tstamp, backend_mintime) /* assumed typical timer resolution */
VAR (evpipe, int evpipe [2])
#undef VARx
//头文件"ev_wrap.h"如下:
#ifndef EV_WRAP_H
#define EV_WRAP_H
#define backend_fd ((loop)->backend_fd)
#define backend_mintime ((loop)->backend_mintime)
#define evpipe ((loop)->evpipe)
#else
#undef EV_WRAP_H
#undef backend_fd
#undef backend_mintime
#undef evpipe
#endif
------解决方案--------------------
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。
------解决方案--------------------
包含ev_vars.h在前,包含ev_wrap.h在后
所以#define backend_fd ((loop)->backend_fd)在定义int backend_fd之后
不会把这句替换掉的,只会把#define backend_fd ((loop)->backend_fd)之后的所有backend_fd替换掉
#define ev_tstamp double
struct ev_loop
{
ev_tstamp ev_rt_now;
#define ev_rt_now ((loop)->ev_rt_now)
#define VAR(name,decl) decl;
#include "ev_vars.h"
#undef VAR
};
#include "ev_wrap.h"
/////////////////////////////////////
//相关的头文件:
//头文件"ev_vars.h"如下:
#define VARx(type,name) VAR(name, type name)
VARx(int, backend_fd)
VARx(ev_tstamp, backend_mintime) /* assumed typical timer resolution */
VAR (evpipe, int evpipe [2])
#undef VARx
//头文件"ev_wrap.h"如下:
#ifndef EV_WRAP_H
#define EV_WRAP_H
#define backend_fd ((loop)->backend_fd)
#define backend_mintime ((loop)->backend_mintime)
#define evpipe ((loop)->evpipe)
#else
#undef EV_WRAP_H
#undef backend_fd
#undef backend_mintime
#undef evpipe
#endif
------解决方案--------------------
编译选项加/EP /P,重新编译,查看宏展开后对应的.i文件。
------解决方案--------------------
包含ev_vars.h在前,包含ev_wrap.h在后
所以#define backend_fd ((loop)->backend_fd)在定义int backend_fd之后
不会把这句替换掉的,只会把#define backend_fd ((loop)->backend_fd)之后的所有backend_fd替换掉