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

118
Vistas
Llame a #define varias veces en función de un valor específico

Si llamas a algo como esto en C:

 #include <stdio.h> #define REPS ,a ... int a = 1; printf("%d" REPS);

Funcionará, pero ¿es posible llamar a la macro REPS varias veces en función de un valor desconocido, como por ejemplo, que quiero tener cinco entradas en un scanf , pero quiero que mi código lo automatice (por ejemplo, si #define REPS ,a[i] entonces: ... ,a[1] ,a[2] )?

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Funcionará, pero ¿es posible llamar a REPS varias veces en función de un valor desconocido?

No. #define crea una macro de preprocesador que puede usar en su código, pero cuando el compilador compila su código, el valor real se sustituye por la macro. Si usted tiene:

 #define FOO 7

por ejemplo, cada aparición de FOO en su código se reemplaza por 7 antes de compilar el código; para cuando el compilador ve tu código, no hay #define ni FOO , solo 7 donde sea que haya FOO . Aunque existen otros comandos de preprocesador (p. ej. #if ) que pueden controlar si se evalúa un determinado #define , no existen otras estructuras de control de preprocesador (bucles, etc.).

Quiero tener cinco entradas en un scanf, pero quiero que mi código lo automatice (por ejemplo, si #define REPS ,a[i] entonces: ... ,a[1] ,a[2])?

Ciertamente puedes automatizar algo así; es solo que el preprocesador no es la herramienta adecuada para el trabajo. Considerar:

 int reps = 5 //... for (int i = 0; i < reps; i++) { scanf(" %d", &a[i]); }
over 4 years ago · Santiago Trujillo Denunciar

0

REPS se evalúa en tiempo de compilación, por lo que no puede depender de los valores de tiempo de ejecución en este caso, a archivo . Hay trucos, pero en general no se pueden compilar bucles con macros.

Le sugiero que escriba una función a lo largo de estas líneas en su lugar:

 #include <stdio.h> void print_int_array(size_t n, int a[n]) { for(int i = 0; i < n; i++) printf("%d%s", a[i], i + 1 < n ? ", " : "\n"); } int main() { print_int_array(0, (int []) {}); print_int_array(1, (int []) {1}); print_int_array(2, (int []) {1, 2}); }
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