首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-04 
预编译#if + macro 应该如何理解?在winsock2.h中看到如下代码#if INCL_WINSOCK_API_PROTOTYPESWINSOCK_API

预编译#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的解释

热点排行
Bad Request.