首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Win32 mkdir诉_mkdir

Win32 mkdir诉_mkdir
EN

Stack Overflow用户
提问于 2015-10-25 06:02:54
回答 1查看 2.3K关注 0票数 7

此页上,微软称POSIX支持“此页 C++ Conformant”_mkdir是不可取的。这似乎也适用于其他类似的POSIX函数。

就它们而言,它们是否意味着不赞成,或者是否存在一些标准机构(POSIX,ISO?)已经反对了吗?

在哪些方面,它更符合C++标准,以及它对哪个标准更符合?

不幸的是,我无法访问实际的C++标准,尽管我确实查看了C++11 (N3337)上一个免费可用的草案,它没有提到我可以看到的这些功能。

我问这个问题的原因是,我经常调用这些POSIX函数,但是我不希望根据不推荐的标准编写代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-27 01:55:54

只有旧名称被弃用,而不是函数,而仅在Visual中,而不是在POSIX中。

基本上,原因是mkdir没有被定义为C++标准中的运行时库函数,而非标准的运行库函数应该以下划线开头。因此,Microsoft将下划线添加到运行时库中的所有非标准函数名中。其中大部分是类似POSIX的函数,尽管有一些特定于Windows的函数。

标准中定义供实现使用的标识符的部分是2.10,第3段。据我所知,该标准没有明确规定该实现不能使用其他标识符,但它可能隐含在这样一个事实中,即这样的实现将无法构建一个合法的C++程序,而该程序碰巧以一种不兼容的方式使用同名。

在这种特殊情况下,只有当程序包含相关的实现定义的标头时,这才是正确的,所以我不确信C++确实确实要求Visual取消旧名称,但是看起来微软要么认为是这样,要么是使用保留标识符是最佳实践。(或者说,如果能够按原样编译POSIX源代码,就应该阻止这种情况;选择吧!)

附加注意:我假设命名冲突也有可能在链接更复杂的程序时造成问题,即使不包括实现定义的标头。但是,在这种情况下,不推荐函数是否真的有帮助还不清楚,因为旧的名称仍然存在于库中。(然而,它们在一个不同的.lib文件中,也许这在某种程度上改善了问题。)

您可以在这里下载当前C++标准的2014年11月工作草案。

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

https://stackoverflow.com/questions/33326732

复制
相关文章

相似问题

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