c++中的条件编译

习惯就好zz
嵌入式领域新星创作者
2020-04-19 02:16:51
我在编写使用libssh库时,在mac和windows中调用ssh库,略微有一点不一样。mac中可以直接使用函数,而windows需要加载库。使用函数指针来调用库。这就使用了两个文件。
然后我不得不用#ifdef Win32和ifdef mac这种宏编译源文件。
有没有什么更优雅的方式实现此类代码。就是同一个接口,但是会调用不同的底层函数。
比如我写一个ssh的调用类,如果是windows的就用windwos接口,如果是mac的就用mac接口。
...全文
236 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
_mervyn 2020-04-19
  • 打赏
  • 举报
回复
统一形式的接口定义h文件。不同平台分开用不同cpp文件实现之。 编译时,针对不同平台选择不同的cpp参与编译。
sdghchj 2020-04-19
  • 打赏
  • 举报
回复
平台不同,API不同,必然会有这个过程,要么是你做(优雅),要么是别人帮你封装好(不优雅)。 就像文件系统调用接口一样,你用早期的C++,想跨平台,只能自己做去条件编译, 现在有boost、c++19等已经帮你封装了一些,你可以直接用,当然,没封装到的,还得你自动做。

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧