Buenas, estoy recién experimentando con C y quería ver si podía hacer un simple Profiler. Este es el código:
Profiler.C
Código PHP:
#include <time.h>
struct intervalo
{
clock_t comienzo;
clock_t final;
double tiempo;
char identificador[12];
};
static clock_t comienzo;
static int intervalosEstablecidos = 0;
extern struct intervalo intervalos[7];
extern void comenzar()
{
comienzo = clock();
}
extern double finalizar()
{
clock_t final;
double tiempoEjecucion;
final = clock();
tiempoEjecucion = (double)(final - comienzo) / (double)CLOCKS_PER_SEC;
return tiempoEjecucion;
}
extern int comenzarIntervalo(char ident[])
{
struct intervalo nuevoIntervalo;
nuevoIntervalo.comienzo = clock();
nuevoIntervalo.identificador = ident; //'Incompatible types in assigment'
intervalos[intervalosEstablecidos] = nuevoIntervalo;
intervalosEstablecidos++;
return intervalosEstablecidos;
}
extern void finalizarIntervalo(int indiceIntervalo)
{
intervalos[indiceIntervalo].final = clock();
intervalos[indiceIntervalo].tiempo = (double)(intervalos[indiceIntervalo].final - intervalos[indiceIntervalo].comienzo) / (double) CLOCKS_PER_SEC;
}
Profiler.h
Código PHP:
extern void comenzar();
extern double finalizar();
extern struct intervalo intervalos[];
extern int comenzarIntervalo(char ident[]);
extern void finalizarIntervalo(int indiceIntervalo);
Main.c
Código PHP:
#include <stdio.h>
#include <stdlib.h>
#include "libMath.h"
#include "Profiler.h"
int main()
{
int i, indice;
intervalo miIntervalo; //'Intervalo undeclared'
comenzar();
i = 0;
indice = comenzarIntervalo(NULL);
while ( i <= 50000)
{
factorial(i);
if (i > 25000)
{
finalizarIntervalo(indice);
}
i++;
}
printf("Tiempo de ejecucion: %.2f segundos.\n", finalizar());
printf("Tiempo de ejecucion de intervalo: %.2f segundos.\n", intervalos[indice].tiempo); //'Invalid use of undefined type struct intervalo'
system("PAUSE");
return 0;
}
En esas líneas me da error. El respectivo mensaje de error que me arroja mi entorno (Dev C++) es el que está al lado, remarcado en rojo.
No sé bien en donde puede estar el error. Si estoy declarando la estructura intervalo en el header y definiendola en el código fuente, ¿Por qué no la está reconociendo el archivo principal?. Espero que puedan ayudarme con esto. Gracias de antemano, por al menos haber leído este post.
Saludos a todos!.