#ifndef _IME_HEADER_FAJLA_
#define _IME_HEADER_FAJLA_
// a ovde stavi definicije, deklaracije, itd...
#endif
// ovo je pointer na funkciju
typedef float(* PFNFuncOP)(float a, float b);
/* function returning pointer to int */
int *func(int a, float b);
/* pointer to function returning int */
int (*func)(int a, float b);
struct Instr
{
float op1;
float op2;
PFNFuncOP op;
};
i onda pises:
float Sabiranje(float a, float b)
{
return a+b;
}
Instr i;
i.op1 = 1;
i.op2 = 2;
i.op = Sabiranje; // nije greska.. Sabiranje se pise bez zagrade i parametara . U ovom slucaju rec Sabiranje predstavlja pointer na funkcije a ne poziv funkcije.
IzvrsiInstr(i);
a u IzvrsiInstr(Instr* i)
{
i->op(i->op1, i->op2);
}
i gle cuda.. pozvace se sabiranje!!
Ukljucio si neki header 2 ili vise puta a nisi se zastitio od toga. Svaki .h file zapocni na sledeci nacin:
Kod:#ifndef _IME_HEADER_FAJLA_ #define _IME_HEADER_FAJLA_ // a ovde stavi definicije, deklaracije, itd... #endif
Ako kasnije napises #include "header.h" dva ili vise puta, samo ce prvi put biti procesiran, svaki sledeci put ce biti preskocen.
Budi pazljiv da se ne desi slucaj da imas dva razlicita headera sa identicnom zastitom.
Pa molim vas Gosn. Side, nisam tražio da mi se komentariše kod van pitanja. :d
typedef void(* exe_function_ptr)(inst * inst_struct_ptr, int * memory_ptr, processor_data * proc_ptr);
struct A; // deklarisi struct A. kasnije cu objasniti sta je A.
struct B
{
A *a; // ovo je leglno, jer kompajler zna da definicija A postoji negde
};
struct C
{
A a; // ovo nije moguce izvesti jer kompajler nezna detalje o struct A
};
// detalji o struct A
struct A
{
...
};
while (proc.halt == 0)
{
ri = instMem[proc.pi];
inst_execute(&ri, podMem, &proc);
}
void inst_execute(inst * instr_ptr, int * memory_ptr, processor_data * proc_ptr)
{
instr_ptr->opcode(instr_ptr->adr1, instr_ptr->adr2, instr_ptr->is_1_array_ptr, instr_ptr->is_2_array_ptr, instr_ptr->flag_1, instr_ptr->flag_2, memory_ptr, proc_ptr);
}
void inst_execute(inst * instr_ptr, int * memory_ptr, processor_data * proc_ptr)
{
instr_ptr->opcode(instr_ptr->adr1, instr_ptr->adr2, instr_ptr->flag_1, instr_ptr->flag_2, memory_ptr, proc_ptr);
}
Follow along with the video below to see how to install our site as a web app on your home screen.
Napomena: this_feature_currently_requires_accessing_site_using_safari