port visual studio c++ to linux gcc version. make 之后 遇到
LBFGSCPP.cpp: In member function ‘std::wstring ExceptionWithIflag::toString()’:
LBFGSCPP.cpp:42: error: ‘_swprintf’ was not declared in this scope
make: *** [LBFGSCPP.o] Error 1
_swprintf 在linux下不兼容,所以改用 swprintf(), 多了一个argument . maximum count
见http://msdn.microsoft.com/en-us/library/ybk95axf(v=vs.80).aspx
//#include "stdafx.h"
#include <stdio.h>#include "./LBFGSCPP.h"
#include <math.h>
#include <sstream>
#include <iostream>
#include <string>
using namespace std;
ExceptionWithIflag::ExceptionWithIflag()
{
content = L"";
iflag = -1;
}
ExceptionWithIflag::ExceptionWithIflag( int i, wstring s )
{
content = s;
iflag = i;
}
ExceptionWithIflag::~ExceptionWithIflag()throw()
{
}
wstring ExceptionWithIflag::toString()
{
wchar_t szCause[255];
wstring strFormatted;
// _tcscpy(szCause, what());
//GetErrorMessage(szCause, 255);
// In real situations, it is
// appropriate to read this from
// a wstring resource so it would be easy to
// localize.
//strFormatted += szCause;
strFormatted += content;
wchar_t buff[256];
_swprintf(buff, L"(iflag == %d)", iflag);
//change to swprintf(buff, 256,L"(iflag == %d)", iflag) in linux
wstring str(buff);strFormatted += str;
return strFormatted;
}