请教各位关于 C++的问题

查看 136|回复 9
作者:yaott2020   
本科学过一点 C++,但也仅限于基本语法,class 虚函数之类的(印象中隐约记得)。后来就完全没有动过了。但是刚刚看了 v2 的一篇帖子,顿时引起了兴趣。
[ol]

  • C++ 有啥好用的包管理吗?我之前学过一点 Rust 就是因为 C++ 似乎(?)没有好用的包管理(本科可能只是入门太浅没讲到,或许是我忘记了?)

  • C++ 每个版本变化都很大吗?应该怎么选择版本入手?

  • 跨平台写起来痛苦吗?(看起来 Golang 跨平台做的不错)
    [/ol]

    跨平台, 好用, Golang, Rust

  • yaott2020
    OP
      
    大佬们轻喷,我真的不太懂 C++,有啥问题请指教。。。
    mainjzb   
    C++真的没有包管理。各大三方包管理基本都是有其中一些库。。。
    比如我用 vcpkg ,前几天想用 QHotkey 就没有。没办法只能自己编译。编译了好几次才链接成功。这类问题已经是 C++的硬伤了。你必须花费很多时间在无关编码的问题上。
    目前主流 14 17 大部分版本发布后,3 年后才会慢慢扩散到项目上。qt 目前是 17
    C++很多系统有关接口。。。事实上是 go 都有人给你擦屁股了。C++大概率你要自己擦屁股。或者找一个已经给你擦屁股了的库,又要经历一些自己编译链接失败的问题。
    能支持 cmake 的库已经是谢天谢地了。。。
    我也是菜鸡。
    ysc3839   
    2. 有大有小,像 C++14 C++17 就不太大,C++20 就很大
    3. 个人感觉不痛苦,C++20 的 STL 用起来已经挺方便的了,C++11 配合 boost 也没啥问题。
    ysc3839   
    @mainjzb Qt 只是默认旧版本吧,不是不支持旧版本,之前我用 C++20 配合第三方的 Qt 协程库,没有什么问题
    hhjuteman   
    1. vcpkg or conan, 就算有包管理器很多项目也是 compile from source ,好控制参数,有问题随时改,或者是自己套 conan 或者 vcpkg 的服务自建。或者用 cmake ,脚本小源码模块写好参数自己编。我现在公司的项目就是 cmake + python 管理的流程,说白了就是 cmake+脚本。方法很多,不统一,属于是八仙过海各显神通了。
    2. 版本向下兼容,一般一个标准出来 5 年左右基本所有主流的编译器会完全支持该标准,这个时候我就推荐你完全掌握这个标准了。比如 2022 年要掌握 c++17 ,2025 掌握 c++ 20 。版本变化有时很大,有时很小,需要自己关注。
    3. 跨平台不碰图形很好跨,涉及到图形相关就很难受。即使是 QT 这种,到了 Linux 上面也得考虑 x11 ,Wayland 。Mac 端要考虑 QT 版本和 Mac 版本的兼容性。3D 图形可以用 OpenGL 和 Vulkan ,但是还是一样涉及到窗口管理器等蛋疼的内容。 没有 GUI 的也不需要跨,只做 Unix 兼容,windows 想跑开 docker 或者 wsl 跑。很多库都是跨平台的,如果整个项目引用的都是跨平台的库,标准库等等,那么工作就比较好做。
    mainjzb   
    对 C++而言,cmake 是目前唯一解,目前的包管理不如 cmake 。cmake 是主流
    目前有一些人在用 zig 的包管理编译 c 的库,希望 zig 能解决包管理的问题吧。。。
    nenseso   
    C++跨平台不痛苦,算是比较好的选择,其他很多新的语言支持都没有它好,但是有时候有些符号冲突问题也很难啃,算是难度和趣味并存吧
    NEO17   
    1.没啥好用的包管理,vcpkg 凑合用,有时拉取公网资源很麻烦,毕竟 build 环境可能会多种多样,最好还是源码管理,cmake 统一构建。
    2.大致是 C++98,C++11, C++14, C++17,C++20... C++98 是第一个 C++ ISO ,但 C++98 之前已经大量使用;从 C++11 开始进入 Modern C++; C++14 是对 C++11 的完善,C++17 计划是大更新,实际都是很多小更新; C++20 可能是新的 C++11 。
    3. C++ 跨平台痛不痛苦和代码库中老 C++ 代码多不多有关,往往是依赖一堆老的 C++ 代码、融合多个版本的 C++ 导致跨平台有很大包袱,如果都是现代 C++、版本一致,较少的三方库,利用 CMake C++ 跨平台还是很好搞的。
    antonius   
    1. C++ 有啥好用的包管理吗?
    有,vcpkg 。我个人习惯用自己管理,然后用 cmake 构建,复杂了点,但是没什么外部依赖。
    构建系统一般用 cmake ,也有[xmake]( https://xmake.io/#/),[GENie]( https://github.com/bkaradzic/GENie),[fips]( https://github.com/floooh/fips)。
    2. C++ 每个版本变化都很大吗?应该怎么选择版本入手?
    相比 C 来说,变化比较多。为了兼容性起见可以选择 C++11 或者 C++14 ,我个人更倾向于[Orthodox C++]( https://gist.github.com/bkaradzic/2e39896bc7d8c34e042b),在可读性和性能上保持一个平衡。
    3. 跨平台写起来痛苦吗?
    还好,涉及到跨平台的有:文件系统,图形以及系统 GUI 。不过也有相关的开源解决方案,比如 SDL2 、GLFW 等等。
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部