Sari la conținut
ELFORUM - Forumul electronistilor

Apelare functii din diferite fisiere


claudio

Postări Recomandate

Salut,

 

Nu reusec sa apelez o functie (scrisa in main.c) dintr-un alt fisier.

La compilare primesc warning-ul: "implicit declaration of function 'Functie1'

 

main.c

#include functii.hvoid Functie1(int var1);int main(void){   //...}void Functie1(int var1){   //...}

functii.h

void AltaFunctie(int var2);

functii.c

#include "functii.h"void AltaFunctie(int var2){      Functie1(var2);     //-> warning!!!}

Pentru editare/compilare folosesc AVRStudio4, fisierele sunt adaugate la SourceFiles & HeaderFiles.

Link spre comentariu
  • Răspunsuri 5
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • claudio

    3

  • godFather89

    3

Top autori în acest subiect

Defineste si un main.h in care bagi

#ifndef __MAIN_H__#define __MAIN_H__void Functie1(int var1);#endif

pe care apoi il incluzi in functii.c

#include "main.h"

Evident, poti declara prototipul si in functii.h sau chiar direct in functii.c, insa e recomandat ca fiecare c sa aiba h-ul lui. Ajuta mult la lizibilitatea si intretinerea codului.

Link spre comentariu

A mers varianta cu declarare in main.h.Mersi.Alta problema am acum la declararea variabilelor.Sunt 2 variabile care sunt folosite si in main.c si in functii.c. Cum trebuie procedat?

Link spre comentariu

le declari intr-un c iar in celelalte fisiere in care le accesezi le declari la fel doar cu un extern in fata.

 

main.c

int valoare;

fisier.c

extern int valoare;

sau la fel poti declara in main.h

extern int valoare;
dupa care variabila va fi accesibila in orice fisier in care este inclus headerul main.h
Link spre comentariu

prefer sa le scriu in main.c; din ce am citit pe net zicea ca nu e recomandat sa definesti variabile in headerele fisierelor .care vreo legatura ca in main le definesc "extern int" iar in fisierele secundare doar "int", deoarece mi se pare mai usor de urmarit, tinand cont ca sunt definite in main, astfel stiu care sunt externe si care nu.

Link spre comentariu

Definirea efectiva este cea normala. Ea se face in fisierele c. Definirea cu extern in fata, specifica compilatorului ca variabila aceea nu este definita in fisierul curent, ci in altul, urmand sa fie rezolvata adresa ei in etapa urmatoare (linking).

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări