Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

146
Vistas
Variables definidas globalmente como retorno de función

Tengo una función que devuelve el puntero al nombre del día de la semana cuando pasa el número del día de la semana. Tengo la sensación de que hago algo ilegal al usar cadenas definidas globalmente como retorno de función. ¿Es ese estilo aceptable?

 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; } };
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Para profundizar en lo que dijo Eugene Sh:

  1. Es legal y aceptable.

  2. Sin embargo, los pondría en una matriz:

EJEMPLO:

 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]; }
over 4 years ago · Santiago Trujillo Denunciar

0

Lo que haces está bien, pero debería ser const char* dayOfWeekToChar(int day) , porque devuelves un puntero a const char* y no un puntero a char* .

Podrías hacer esto que es más o menos lo mismo que haces:

 const char* dayOfWeekToChar(int day) { static const char* days[] = { "Sun", "Mon", ... }; return days[day]; }

Sin embargo, probablemente debería agregar algunas comprobaciones para asegurarse de que el day esté dentro del rango [0..6] .

over 4 years ago · Santiago Trujillo Denunciar

0

Esta es una forma aceptable de hacer las cosas. strerror es un ejemplo de este concepto que se usa en la biblioteca C ( strerror traduce los valores de errno a descripciones de cadenas utilizables del error que ocurrió).

Sin embargo, recomendaría una de dos cosas. Deje muy claro en su documentación que el valor de retorno de esta función NO DEBE SER MODIFICADO POR EL PROGRAMADOR, o puede asignar dinámicamente una nueva cadena para que la función de llamada pueda modificarla de manera segura.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda