其他分享
首页 > 其他分享> > c – 包括具有一个头文件和单独源文件的特定于平台的库

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