跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 移植了一个库,眼睛快要瞎了。
未分類
26 3 月 2021

移植了一个库,眼睛快要瞎了。

移植了一个库,眼睛快要瞎了。

資深大佬 : xuegy 9

源代码只支持 gcc 编译,clang 疯狂报错 ambiguous 。一边编译一边对着报错信息改,一共改了四百行,几乎全都是把 xxx A=B; 改成 xxx A(B);
眼睛都快要瞎了。我是该吐槽 gcc 下限太低什么玩意都给编译呢,还是该吐槽 clang 严格遵守标准过于死板呢?
大佬有話說 (36)

  • 資深大佬 : codehz

    哎,不应该改成 xxx A{B}; 吗

  • 主 資深大佬 : xuegy

    @codehz 圆括号能用为啥要非要上花括号?

  • 資深大佬 : Tony042

    @xuegy 两个还是不太一样,花括号是 initializer_list,两个略有区别,我也不太清了,依稀记得花括号会更好一些,可以防止一些歧义。

  • 資深大佬 : Tony042

    为啥不写个 operator=直接考虑类型转换

  • 主 資深大佬 : xuegy

    @Tony042 非要这样写就默认至少 C++11 了吧,兼容性咋办?

  • 資深大佬 : BrettD

    禁用 clang 编译警告(-Wno-everything )解千愁(逃

  • 資深大佬 : kokutou

    感觉可以写个脚本批量处理吧。。。

  • 資深大佬 : BrettD

    哦没事了,原来是编译错误

  • 資深大佬 : kekxv

    永 gcc 编译为动态库或者静态库来用?

  • 資深大佬 : geelaw

    @Tony042 #4 这里需要的是 ctor 不是 operator=。

    @xuegy #2 因为 https://en.wikipedia.org/wiki/Most_vexing_parse
    但比较奇怪,一般来说用 = 初始化不会有歧义问题,反而是用函数调用初始化容易有“最烦人的解读”。

  • 資深大佬 : wnpllrzodiac

    写个 py 脚本搞?

  • 資深大佬 : wnpllrzodiac

    @Tony042 最好都用 花瓜号(侯杰大师发音),比较保险

  • 資深大佬 : feather12315

    sed 一行的事情

  • 資深大佬 : AndyAO

    感觉这种事情应该写个脚本来解决吧,甚至正则表达式,也有可能直接全部解决

  • 資深大佬 : lifanxi

    我没有理解为什么 clang 要报有歧义,如果 xxx 类的构造函数和类型转换函数没有花式作死的话,xxx A=B;就是调用拷贝构造函数通过 B 构造 A,好像没啥歧义啊。

  • 資深大佬 : cominghome

    所以说程序员掌握一门脚本语言也是很重要的

  • 資深大佬 : lcdtyph

    @lifanxi
    不一样,xxx A(B);是 direct initialization,而 xxx A=B;是 copy initialization
    区别是当 AB 类型不同时 copy initialization 会考虑隐士转换,从而引入另一条构造路径导致歧义。
    解决方法之一可以在正确的地方使用 explicit

  • 資深大佬 : mlhadoop

    还以为做了啥手术 /doge

  • 資深大佬 : nmap

    还以为你移植了眼睛

  • 資深大佬 : pluxj

    用 花括号 {} 好一些,不然可能认为你在声明一个函数

  • 資深大佬 : cyrbuzz

    (.+) (.+) = (.+);
    $1 $2($3);

  • 資深大佬 : cyrbuzz

    @cyrbuzz
    vscode,单行开正则…

  • 主 資深大佬 : xuegy

    我也想过写脚本解决,但是很多没错的地方也符合你这种正则表达式…

  • 主 資深大佬 : xuegy

    @cyrbuzz 反正已经改完了,以后也不用再改第二次。

  • 資深大佬 : cyrbuzz

    @xuegy

    好吧~,have a good day~.

  • 資深大佬 : se77en

    @pluxj 花括号分场合的,不能一概而论,建议读一下 Google 的这个 Tip: https://abseil.io/tips/88

  • 資深大佬 : twor2

    @wnpllrzodiac 看了几个台湾人节目, 括好像都是发瓜的音,比较常见的词,是 包瓜(包括)

  • 資深大佬 : whee1

    你太死板了吧,别人的代码,修改编译选项让它过就是了,何必为难自己呢。

  • 主 資深大佬 : xuegy

    @whee1 我要移植过来自己用,得先把坑填上啊

  • 資深大佬 : whee1

    @xuegy #29 我昨天也干过类似的事情:给一套代码的析构函数加 19 个 noexcept 。

  • 資深大佬 : linux40

    @whee1 析构函数本身默认 noexcept 的,不用手动加。

  • 資深大佬 : jones2000

    我 c++库 15 万行,移植到 js, 小程序, py 3 个平台, 移植了 7 个月. 还包括测试.
    https://github.com/jones2000/HQChart

  • 主 資深大佬 : xuegy

    @jones2000 你这个太狠了,我只是从 Linux 移到到 Mac 。

  • 資深大佬 : pluxj

    @se77en get

  • 資深大佬 : whee1

    @linux40 #31 而我改的代码却是 noexcept(false)。

  • 資深大佬 : levelworm

    @Tony042 我记得好像是 initializer list 比 copy constructor 快一点

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具