当前位置:   article > 正文

cmdline轻量级的C++命令行解析库--windows_cxxabi.h

cxxabi.h

cmdline介绍

cmdline 是一个非常easy好用的C++命令行解析库,其基于模板。所以使用非常easy,写出的代码也非常优雅。

因为其仅仅包括一个头文件。所以非常easy集成到自己的项目中。

官网:https://github.com/tanakh/cmdline

参考:http://www.mamicode.com/info-detail-1923374.html

在window上利用VS编译的时候遇到问题汇总。

错误1 cxxabi.h提示错误

fatal error C1083: 无法打开包括文件:“cxxabi.h”: No such file or directory

需要修改的地方

  1. //当编译器非gcc时,不包含cxxabi.h头文件
  2. #ifdef __GNUC__
  3. #include <cxxabi.h>
  4. #endif
  5. static inline std::string demangle(const std::string &name)
  6. {
  7. #ifdef _MSC_VER
  8. return name; // 为MSVC编译器时直接返回name
  9. #elif defined(__GNUC__)
  10. // 为gcc编译器时还调用原来的代码
  11. int status=0;
  12. char *p=abi::__cxa_demangle(name.c_str(), 0, 0, &status);
  13. std::string ret(p);
  14. free(p);
  15. return ret;
  16. #else
  17. // 其他不支持的编译器需要自己实现这个方法
  18. #error unexpected c complier (msc/gcc), Need to implement this method for demangle
  19. #endif
  20. }

参考https://github.com/tanakh/cmdline/issues/6

错误2 std::max使用的位置错误

 error C2589: '(' : illegal token on right side of '::'

error C2143: syntax error : missing ';' before '::'

解决方式(两种)修改如下面

max_width = (std::max)(max_width, (ordered[i]->name().length()));

max_width=std::max< size_t>(max_width, ordered[i]->name().length());

参考 https://github.com/tanakh/cmdline/issues/13

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/65259
推荐阅读
相关标签
  

闽ICP备14008679号