[ Sima_Strahota89 @ 06.01.2009. 15:39 ] @
Pozdrav svima!
Hteo bih da napravim nesto ovako:
1.main.c fajl u kome je naravno glavni program
2.funkcije.c u kome ce se nalaziti funkcije koje cu da pozivam iz glavnog programa
3.funkcije.h fajl koji treba samo da sadrzi metode iz funkcije.c fajla.

U projektu treba da bude samo main.c a u okviru njega treba da postoji
#include “funkcije.h”
Kako to da sve povezem?
Bilo bi dobro da taj fajl funkcije.h mogu da koristim i iz nekog drugog projekta da bude dostupna kao recimo <stdio.h>

To je modularno programiranje valjda, ja sam za to samo cuo nesto povrsno pa kad sam napravio projekat izgledalo je ovako:

Code:

/*main.c*/
#include <stdio.h>
#include "funkcije.h"

int main()
{
    int x;
    printf("Unesi broj");
    scanf("%d",&x);
    printf("Kvadrat broja %d je %d",x,kvadrat(x));
    return 0;
}




Code:

/*funkcije.h*/
#include <funkcije.c>



Code:

/*funkcije.c*/
int kvadrat(int x)
{
    return x*x;
}


E sad razumem ja da ovo nema veze s mozgom al jedino ovako radi.

U funkcije.h treba nesto #ifndef il tako nesto a nemam pojma kako se to koristi, i treba prototip funkcija koje su u funkcije.c.

Zanemarite debilnu funkciju kvadrat i nazive datoteka, napravljene su da bi ja nekako lakse skontao sve ovo.

Dakle treba mi pomoc kako se ovo radi zaista?
Svaka pomoc dobrodosla...
[ reject @ 06.01.2009. 19:45 ] @
http://www.functionx.com/cpp/index.htm
http://www.functionx.com/cpp/Lesson05.htm
http://www.functionx.com/cpp/Lesson07.htm - vidi pod File Preprocessors
[ Eurora3D Team @ 09.01.2009. 18:30 ] @
Skoro da si dobro uradio ...
<> u include se koristi kad su .h fajlovi u default include folderima.
Kad su .h fajlovi u istom folderu sa source fajlovima koristi se "".
Snimi ove fajlove ispod u isti folder i kompajluj & linkuj main.c i funkcije.c
poz
Code:

/*main.c*/
#include <stdio.h>
#include "funkcije.h" // ukljucujemo funkcije.h fajl da bi kompajler procitao deklaraciju funkcije kvadrat i znao sta je

int main()
{
    int x;
    printf("Unesi broj ");
    scanf("%d",&x);
    printf("Kvadrat broja %d je %d",x,kvadrat(x));
    return 0;
}

Code:

/*funkcije.h*/
int kvadrat(int); // deklaracija funkcije kvadrat

Code:

/*funkcije.c*/
#include "funkcije.h"

int kvadrat(int x) // definicija funkcije kvadrat
{
    return x * x;
}
[ Sima_Strahota89 @ 16.04.2009. 16:12 ] @
Izvinjavam se sto me nije bilo dugo na forumu i sto tek sad odgovaram na temu!

Kad odradim sve kao u prethodnom postu, kompajler mi prijavi sledece:

obj\Debug\main.o In function `main':
C:\Program Files\CodeBlocks\Projekti\H fajl\main.c undefined reference to `_kvadrat'
=== Build finished: 1 errors, 0 warnings ===

Code::Blocks...
[ X Files @ 16.04.2009. 19:53 ] @
Postoji neki fazon kod Code::Blocks-a /pricam napamet/

Code::Blocks > Project > Add Files > [Izabrati modul: funkcije.cpp] > pa tu negde cekirati Debug i/ili Release (najbolje cekiraj oba)

(ovo isto bi trebalo da je moglo i za vreme pravljenja modula iz okruzenja, a ne ovako naknadno)


Probaj, mozda uspe.
[ Mr. Bond @ 29.06.2009. 02:30 ] @
A sto od tih funkcija ne kreiras funkcije.lib - pa onda koristis staticku biblioteku gde god ti je to potrebno? Barem sam ja tako radio kad mi je za ispit trebalo da imam sve funkcije za jednostruko i dvostruko ulancane liste .... Doduse ne mozes da menjas kod tih funkcija bez source-a al ti pravis paket koji ces koristiti ko zna koliko puta, i treba ti takav kakav jeste zar ne?