首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >basename问题

basename问题
EN

Stack Overflow用户
提问于 2019-06-18 05:50:42
回答 1查看 479关注 0票数 0

所以我在使用basename作为我的学校编程作业时遇到了一个问题

我试过让它工作的一个更简单的版本--我让它工作了,但仍然搞不清楚在这种情况下我到底应该做什么。

代码语言:javascript
复制
// $Id: util.cpp,v 1.1 2016-06-14 18:19:17-07 - - $
#include <libgen.h>
#include <cstring>
using namespace std;

#include "util.h"

ydc_exn::ydc_exn (const string& what): runtime_error (what) {
}

string exec::execname_; // Must be initialized from main().
int exec::status_ = EXIT_SUCCESS;

void exec::execname (const string& argv0) {
   execname_ = basename (argv0.c_str());
   cout << boolalpha;
   cerr << boolalpha;
   DEBUGF ('Y', "execname = " << execname_);
}

void exec::status (int new_status) {
   new_status &= 0xFF;
   if (status_ < new_status) status_ = new_status;
}

ostream& note() {
   return cerr << exec::execname() << ": ";
}

ostream& error() {
   exec::status (EXIT_FAILURE);
   return note();
}

只是尝试编译代码-我在c++中的错误消息是:

代码语言:javascript
复制
' 
util.cpp:15:16: error: no matching function for call to 'basename'
   execname_ = basename (argv0.c_str());
               ^~~~~~~~
/usr/include/libgen.h:40:7: note: candidate function not viable: 1st argument ('const std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char>
      >::value_type *' (aka 'const char *')) would lose const qualifier
char    *basename(char *);
         ^
1 error generated.
make: *** [util.o] Error 1'
EN

回答 1

Stack Overflow用户

发布于 2019-06-18 06:25:58

我认为您的核心问题是既包含cstring又包含libgen.h。如果你看看这些文件中的basename原型,你会发现它们是不同的。如果你是在linux上构建这篇文章,你会在libgen.h版本中看到一个很有启发性的评论。

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/basename.htmlhttps://linux.die.net/man/3/basename在这里也很有用。

我建议移除#include <libgen.h>,然后重试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56639334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档