Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/11/2007, 21:43
mariano_donati
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 19 años, 9 meses
Puntos: 9
Declaración de estructuras

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 iindice;
    
intervalo miIntervalo;     //'Intervalo undeclared'
    
    
comenzar();
       
    
0;
    
    
indice comenzarIntervalo(NULL);
    
    while ( 
<= 50000)
    {
        
factorial(i);
        if (
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!.
__________________
Add, never Remove