读书人

预编译#if + macro 应该怎么理解

发布时间: 2012-02-04 15:43:08 作者: rapoo

预编译#if + macro 应该如何理解?
在winsock2.h中看到如下代码
#if INCL_WINSOCK_API_PROTOTYPES
WINSOCK_API_LINKAGE
int
WSAAPI
WSAStartup(......);
#endif
请问开始的预编译#if 后面跟上那几个宏是什么意思?放在函数声明的前面该如何理解?

[解决办法]

这里视作
if(INCL_WINSOCK_API_PROTOTYPES){}
差别在于,这里如果是真则变异中间的代码,否则不变异,这是C的相关知识,可以在很多地方找到,看看这里http://zhidao.baidu.com/question/5225080.html

INCL_WINSOCK_API_PROTOTYPES 应该是一个定义为一个值的宏,可以当初if判断的表达式

[解决办法]

C/C++ code
#define _FLAG 0             //#define _FLAG 1#if _FLAGvoid fun() { cout<<"aaaa"<<endl; }#elsevoid fun() { cout<<"cccc"<<endl; }#endif
[解决办法]
我也来解释解释

C/C++ code
#if INCL_WINSOCK_API_PROTOTYPES  //#if 后面跟常量 意思就是判断真假了WINSOCK_API_LINKAGE  //这个是跟你后面函数有关的,跟if没关,是指定你后面函数的链接方式int                  //下面是函数声明不说了WSAAPI WSAStartup(......); #endif
[解决办法]

WSAAPI 这种宏一般是相当于WINAPI之类的宏,用来指定调用方式的,比如堆栈如何安排之类的,忽略就好了,:-)

顶一下7楼对WINSOCK_API_LINKAGE的解释

读书人网 >C++

热点推荐