I am using snprintf to send the output to the buffer.
As of now I am doing it only for windows. But from now onwards it has to support for different platforms (Windows, Linux and Mac)
To support for multiple platforms, I am planning to write a wrapper function with #if tags.
but here the challenge I am facing is, when invoking WrapperSprintf from different places of the project the number of parameters are different.
How to write a common wrapper that can be used from different places with different no of parameters passed to WrapperSprintf function?
I tried the wrapper function like as shown below. Please help me how to proceed with this:
void WrapperSprintf( char buffer, MAX_PATH, const char *format, ... )
{
#if defined(_WIN32)
_snprintf(buffer,MAX_PATH, sizeof(buffer), format,...);
#else
snprintf(buffer,MAX_PATH, format, ...);
#endif
}
Calling WrapperSprintf function1:
char m_systemTime[20];
char* CUPSManager ::getSystemTime()
{
time_t rawtime;
struct tm * timeinfo;
time ( &rawtime );
timeinfo = localtime ( &rawtime );
WrapperSprintf(m_systemTime, MAX_PATH,"%d-%d-%d :%d:%d:%d" , timeinfo ->tm_year +1900,
timeinfo ->tm_mon +1,
timeinfo->tm_mday,
timeinfo->tm_hour,
timeinfo->tm_min,
timeinfo->tm_sec);
return m_systemTime;
}
Calling WrapperSprintf function2:
void getDevicePath()
{
wstring strDevPath;
strDevPath = (LPCWSTR)cDevicePath;
char cDevPath[2048];
WrapperSprintf(cDevPath, MAX_PATH, "%ls",strDevPath.c_str());
int nPathLength = strlen(cDevPath);
...
}
Aucun commentaire:
Enregistrer un commentaire