网络编程-SOCKET-创建SOCKET-WINDOWS下socket函数声明问题

本文深入探讨了WINSOCK2.H头文件中socket函数的声明及条件编译宏INCL_WINSOCK_API_PROTOTYPES的含义与作用。通过分析,解释了为何该宏始终被设置为1及其背后的原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天翻了下VC下SOCKET头文件WINSOCK2.H,又看了下socket函数的声明:

 

#if INCL_WINSOCK_API_PROTOTYPES
WINSOCK_API_LINKAGE
SOCKET
WSAAPI
socket(
    int af,
    int type,
    int protocol
    );
#endif // INCL_WINSOCK_API_PROTOTYPES

 

注意到#if INCL_WINSOCK_API_PROTOTYPES这个条件编译,通常我们是通过#if, #ifdef或者#ifndef来判断选择哪一部分来编译以及在#include时解决因为重复包含的问题。

 

但这里的#if INCL_WINSOCK_API_PROTOTYPES这个条件编译是啥意思?在WINSOCK2.H文件靠近开头的位置有有如下定义:

 

#ifndef INCL_WINSOCK_API_PROTOTYPES
#define INCL_WINSOCK_API_PROTOTYPES 1
#endif

 

也就是INCL_WINSOCK_API_PROTOTYPES始终被替换为1,那么既然为1,干嘛还需要这样一个条件?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值