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;
 }