c – 包括具有一个头文件和单独源文件的特定于平台的库
作者:互联网
我正在编写一个独立于平台的套接字库.基本文件结构如下:
source directory
|_________________________
| | |
v v v
header.hpp win32 linux
| |
v v
source.cpp source.cpp
头文件包含任何跨操作系统通用的#includes.源文件#include平台特定的库.
我已经构建了许多像这样的项目,但是我遇到了套接字问题.因为我为函数参数指定了默认值,所以header.h需要头文件中使用的#defines的平台特定库,如SOCK_STREAM,AF_INET和SOMAXCONN.
现在,我不想在我的头文件中使用#ifdef _WIN32语句,因为我希望所有平台特定代码都在单独文件夹中的源文件中.
我基本上是在岩石和硬地之间徘徊吗?是否避免使用#ifdef #includes并指定与标题相关的#defines互斥的默认参数值?
解决方法:
您可以通过在平台无关标头中声明的函数检索它们并在平台特定的.cpp文件中进行适当定义,从而获取默认参数.
或者,您也可以在平台独立标头中将它们声明为extern consts,并在特定于平台的.cpp中适当地定义它们.
标签:c,static-linking 来源: https://codeday.me/bug/20190901/1787261.html