阅读Sofia-SIP源码 - su模块 - su_configure.h/su_config.h/su_types.h

本文档详细探讨了Sofia-SIP库中的su_configure.h和su_types.h头文件,重点分析了su_configure.h中的环境配置宏,如WIN32、WINSOCK和WINSOCK2的定义,以及它们在Windows平台下的作用。同时,提到了su_types.h头文件在网络相关类型的定义,并指出在Windows环境下缺乏某些标准类型定义的情况。

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

从Visual Studio 2010中打开SofiaSIP解决方案。在libsofia_sip_ua工程下的Header Files/win32 headers子目录下可以看到su_configure.h文件。我本来想选取su_types.h头文件来先分析。但我在su_types.h头文件的开始处看到了su_configure.h头文件。这让我想到任何一个工程,照理说都应该有一个初始确定环境信息的头文件。同理,对一个模块来说也应该有一个初始确定环境信息的头文件。因此,我就又将目标转向了su_configure.h文件。

在看过SofiaSIP的辅助文档之一 - 源码文件结构后,再来看SofiaSIP里的源码就稍微有一些经验了。现在知道在头文件的开始处可以看到如下所示注释信息的作用了:

/**@file su_configure_win32.h
 *
 * @b su library configuration for WIN32 (VC6/VC98)
 *
 * The file <su_configure_win32.h> contains configuration information needed
 * by WIN32 programs using @b su library.
 *
 * @author Pekka Pessi <Pekka.Pessi@nokia.com>
 *
 * @date Created: Thu Jan 18 15:30:55 2001 ppessi
 */
紧跟@b之后的内容是描述此文件的概述信息:su库的针对WIN32平台的配置。接下来的一段是详细描述:此头文件包含的是使用su库的WIN32程序所需的配置信息。


下面这句的作用相信应该都清楚:包括它后可以加快编译速度。

#define WIN32_LEAN_AND_MEAN

然后是下面这两句注释。这里的注释信息是说:如果需要将整个工程编译成DLL那么得移出这句(注释掉等同于移出)。现在的工程是libsofia_sip_ua,查看其属性里的配置类型,确实是”动态库(.dll)“。

/* Remove this when building DLL */
/* #define LIBSOFIA_SIP_UA_STATIC */


接着是七个#define。前面三个的用意应该很明显,是否是在WIN32平台(是)、是否有WINSOCK(是)和是否有WINSOCK2(是)。后面四个都是否:有POLL(否,因为是在WINDOWS平台)、有BSDSOCK(否),有STDINT(否,WIN32平台下没有标准的整型数据定义头文件。C99标准定义了stdint.h、inttypes.h,用于统一的跨平台数据定义。可惜VC、BCB等编译器对C99的兼容性较差,有些版本没有该头文件。)和有NT(否,具体含义不详,NT是指操作系统吗?)。

#define SU_HAVE_WIN32		1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值