与2010年和2015年不同的错误

时间:2015-12-03 17:26:56

标签: c++ visual-studio-2010 ace

我在项目中使用C ++代码,其行为与Visual Studio 2010和VS 2015不同。

    if(return_val != 0)
    {
      ACE_OS::set_errno_to_last_error ();
      result->set_error(errno);
    }

return_val是失败的先前函数的返回值。所以下一步是捕获错误值。

在VS 2010中

当调用result-> set_error(errno)时,在调试时,控件转到函数_errno(),在source \ VC \ crt \ src \ dosmap.c中定义。

在VS 2015 找不到源dosmap.c。 我想,errno的宏扩展必须在不同的地方。但行为应该是相同的

我是否需要对2015年的VS设置进行任何更改? 任何帮助都会有用。

1 个答案:

答案 0 :(得分:0)

我认为您尚未安装库的源文件。这可以解释为什么它找不到该文件。

errno是一个奇怪的变量,并且是线程局部的,并且在两个平台上都是宏的。 daemon中发生了什么?

如果函数未设置errno值,则可以解释行为差异。