es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Por qué #define está dando error: se esperaban especificadores de declaración?

Soy un traductor de español que traduce documentos de TI. Traduzca lo siguiente al español. No traduzca el código y la salida en markdown. Soy nuevo, así que disculpe si mi formato está un poco desordenado.

Estoy escribiendo un programa simple de OpenMP para entenderlo mejor, y me he detenido completamente por un extraño error de compilación. Mi implementación en serie se compila muy bien (con gnu11), pero mi compilación paralela parece fallar por alguna razón que no puedo ubicar.

El código completo hasta el punto de falla es el siguiente (y el error que recibo de make sigue después)


#include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> #define N_THR 1 #define MINSIZE 3 // NOTE: minsize es inclusivo aquí #ifdef _OPENMP #include <omp.h> #undef N_THR #define N_THR 4 #undef MIN_SIZE #define MIN_SIZE N_THR // omp_set_dynamic(false); // necesitamos desactivar explícitamente equipos dinámicos para forzar 4 hilos omp_set_num_threads(N_THR); #endif gcc gcc maze.c -o maze gcc maze.c -fopenmp -o mazep maze.c:11:16: error: se esperaban especificadores de declaración o '...' antes de la constante numérica #define NTHR 4 ^ maze.c:15:22: nota: en la expansión del macro 'NTHR' ompsetnumthreads(NTHR); ^~~~~ make: * [Makefile:5: parallel] Error 1

¿Hay alguna pista profunda de sintaxis en lenguaje C que me esté faltando o es algo un poco más obvio?</string.h></stdbool.h></stdlib.h></stdio.h>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que falta un punto y coma después de la línea #define N_THR 4. El compilador espera un especificador de declaración o ... antes de la constante numérica, y el punto y coma es la pieza que falta. Intente agregar un punto y coma después de la línea #define N_THR 4 y vea si eso resuelve el problema.

Comments are closed.