[ damir0205 @ 21.01.2009. 18:58 ] @
Da li mi netko moze reci kako da deklariram navedenu funkciju u .h datoteci, ako se definicija strukture "struct _PROGRAM {....}" nalazi u nekoj drugoj izvornoj datoteci koju ne mogu ukljuciti sa #include "...", odnosno kako da definiram strukturu u datoteci u kojoj mi se nalazi deklaracija funkcije.

float *RealTimeProgramator ( char Hour, char Min, char Sec, char HSec, char Weekday, char Month, char MonthDay, int Year, struct _PROGRAM *EEProg, char *DatePeriod );
[ Mali Misha @ 21.01.2009. 21:17 ] @
Možeš da izvučeš tu strukturu kao definiciju u neki *.h fajl.

Code:
// def.h
typedef struct _PROGRAM {
  // ...
}_PROGRAM;

Pa onda učitavaš to zaglavlje (*.h fajl) gde god ga koristiš. Čak i da definišeš samo jedan objekat tog tipa u nekom fajlu, potrebno je da u drugima nekako proslediš deklaraciju (tj. sam tip) kako bi taj objekat udobno koristio. Inače, i to možeš da zaobiđeš, tako što ćeš napraviti void* pokazivač na taj objekat tamo gde jeste, pa se onda svuda gde treba deklarisati external void* imePokazivaca, i igrati se poznavanja strukture tvog objekta da bi od tog pokazivača koristio šta ti treba. (jer i dalje nemaš tip)

Code:
// a.c
struct _PROGRAM {
  // ...
}myProgram;

void* pMyProgram = (void*) &myProgram;
Code:
// b.c
extern void* pMyProgram; // uzivaj, sad ovaj pokazivac imas i ovde

Dakle, najudobnije je da uradiš kako na početku piše.
[ Eurora3D Team @ 23.01.2009. 23:38 ] @
Ako ne mozes u include jel mozes u source fajl?
npr.
Code:

//structheader.h
typedef struct
{
    int a;
    char* b;
}_PROGRAM,*_LPPROGRAM;

Code:

//fn.h
float *RealTimeProgramator ( char Hour, char Min, char Sec,/*...*/void *EEProg, char *DatePeriod );

Code:

#include <stdio.h>

#include "fn.h"
#include "structheader.h"

//main c
float *RealTimeProgramator ( char Hour, char Min, char Sec,/*...*/void *EEProg, char *DatePeriod )
{
    _LPPROGRAM lpp = (_LPPROGRAM)EEProg;
    if(lpp)
    {
        printf("%d\n",lpp->a);
        printf(lpp->b);
    }

    // ili bez definicije strukture
    int a = *(int*)EEProg;
    char* b = (char*)EEProg + sizeof(int);
    printf("\n%d\n",a);
    printf(lpp->b);

    return 0;
}

int main()
{
    _LPPROGRAM lpp = (_LPPROGRAM) malloc(sizeof(_PROGRAM));
    if(lpp)
    {
        lpp->a = 4;
        lpp->b = malloc(10 * sizeof(char));
        if(lpp->b)
        {
            strcpy(lpp->b,"tekst");
            RealTimeProgramator(0,0,0,lpp,0);
        }
    }
    free(lpp->b);
    free(lpp);
    return 0;
}