我在项目中使用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设置进行任何更改? 任何帮助都会有用。
答案 0 :(得分:0)
我认为您尚未安装库的源文件。这可以解释为什么它找不到该文件。
errno是一个奇怪的变量,并且是线程局部的,并且在两个平台上都是宏的。 daemon
中发生了什么?
如果函数未设置errno值,则可以解释行为差异。