我正在编写一个独立于平台的套接字库。基本的文件结构是这样的:
source directory
|_________________________
| | |
v v v
header.hpp win32 linux
| |
v v
source.cpp source.cpp
头文件包含#include
跨操作系统通用的任何 s。源文件#include
平台特定的库。
我已经建立了很多这样的项目,但是我遇到了套接字的问题。因为我正在为函数参数指定默认值,所以需要在头文件header.h
中使用特定于平台的库,例如、和.#defines
SOCK_STREAM
AF_INET
SOMAXCONN
现在,我不想#ifdef _WIN32
在我的头文件中使用语句,因为我希望所有特定于平台的代码都位于单独文件夹中的源文件中。
我是否基本上被困在岩石和坚硬的地方之间?是否避免#ifdef #includes
和指定与标头相关的默认参数值是#defines
互斥的?