gpt4 book ai didi

c++ - 包括具有一个头文件和单独源文件的特定于平台的库

转载 作者:太空狗 更新时间:2023-10-29 20:45:07 25 4
gpt4 key购买 nike

我正在编写一个独立于平台的套接字库。基本的文件结构是这样的:

source directory
|_________________________
| | |
v v v
header.hpp win32 linux
| |
v v
source.cpp source.cpp

头文件包含所有操作系统通用的#include。源文件 #include 平台特定库。

我已经构建了许多这样的项目,但我遇到了套接字问题。因为我为我的函数参数指定了默认值,header.h 需要头文件中使用的 #defines 的平台特定库,例如 SOCK_STREAMAF_INETSOMAXCONN

现在,我不想在我的头文件中使用 #ifdef _WIN32 语句,因为我希望所有平台特定代码都在单独文件夹中的源文件中。

我基本上是进退两难吗?是否避免 #ifdef#includes 和指定默认参数值与 header 相关的 #defines 互斥?

最佳答案

您可以通过在独立于平台的 header 中声明并在特定于平台的 .cpp 文件中适当定义的函数检索它们来获取默认参数。

或者,您也可以在独立于平台的 header 中将它们声明为外部常量,并在特定于平台的 .cpp 中适本地定义它们。

关于c++ - 包括具有一个头文件和单独源文件的特定于平台的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11506277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com