【发布时间】:2016-09-23 01:18:46
【问题描述】:
我有以下代码,我也想在带有 GCC 4.8 的 Linux 上工作
这适用于 VS 2013
if ( _access( trigger->c_str(), 0 ) != -1 )
{
...
}
我知道在 Linux 上我可以使用函数:access from "unistd.h"
有没有办法避免出现以下情况(更优雅的解决方案)?
#ifdef __linux__
#include <unistd.h>
#endif
#ifdef __linux__
if ( access( trigger->c_str(), 0 ) != -1 )
{
...
}
#else
if ( _access( trigger->c_str(), 0 ) != -1 )
{
...
}
#endif
【问题讨论】:
-
...当我说微软将 C++ 视为二等公民时,我感到很伤心。
access()已被弃用的提议在表面上是愚蠢的。 -
嗯,他们说他们有。我说我上次检查
access()仍然是 POSIX 的一部分,并且仅在微软的现实扭曲领域内被弃用。 -
access()无论如何都不是标准的 C++ 函数。它是 POSIX。 Microsoft 声明已弃用是指在其产品中弃用它,而不是从标准中弃用它。它不在 C++ 标准中的事实意味着他们没有义务支持它(假设他们愿意接受那些坚持应该这样做的开发人员的抱怨)——而且他们对 POSIX 的支持一直是(嗯)选择性的。 -
@SamVarshavchik,
access与 C++ 无关。
标签: c++ visual-studio gcc