I have function that returns pointer to day of week name when pass day of week number. I have feeling I do something illegal by using globally defined strings as function return. Is such style acceptable?
const char* const SUN_NAME = "Sun";
const char* const MON_NAME = "Mon";
const char* const TUE_NAME = "Tue";
const char* const WED_NAME = "Wed";
const char* const THU_NAME = "Thu";
const char* const FRI_NAME = "Fri";
const char* const SAT_NAME = "Sat";
char* dayOfWeekToChar(int day)
{
switch (day)
{
case SUN_NR :
return SUN_NAME;
break;
case MON_NR :
return MON_NAME;
break;
case TUE_NR :
return TUE_NAME;
break;
case WED_NR :
return WED_NAME;
break;
case THU_NR :
return THU_NAME;
break;
case FRI_NR :
return FRI_NAME;
break;
case SAT_NR :
return SAT_NAME;
break;
default:
break;
}
};
To elaborate on what Eugene Sh said:
It is legal and acceptable.
I'd put them in array though:
EXAMPLE:
const char * DaysOfWeekNames[] = {
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
enum DaysOfWeek {
SUN_NR, MON_NR,TUE_NR, WED_NR, THU_NR, FRI_NR, SAT_NR
};
const char * dayOfWeekToChar(enum DaysOfWeek day)
{
return DaysOfWeekNames[day];
}
What you do is OK, but it should be const char* dayOfWeekToChar(int day), because you return a pointer to a const char* and not a pointer to char*.
You could do this which is more or less the same as you do:
const char* dayOfWeekToChar(int day)
{
static const char* days[] =
{
"Sun",
"Mon",
...
};
return days[day];
}
However you should probably add some checks to make sure day is within the range [0..6] .
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With