 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
trully1 Član

Pridružen-a: Pet 14 Nov 2003 20:20 Prispevkov: 216 Aktiv.: 0.91 Kraj: Železniki
|
Objavljeno: Pon Jan 28, 2008 9:27 pm Naslov sporočila: Težave z C18 |
|
|
Zdravo
Rabil bi malo pomoči pri programiranju v C18 od Microchipa.
Generiral sem datoteko "definicije.h" in vanjo vnesel vse definicije kot npr:
Koda: |
#define WR PORTAbits.RA2 |
Nato sem napisal dve datoteki "main.c" in "funkcije.c"
Na začetek main datoteke sem vključil stavek:
Koda: |
#include "definicije.h" |
Signal WR nastopa tako v "main.c", kot tudi v "funkcije.c". Pri kompajlanju mi javi napako, da v datoteki "funkcije.c" signal WR ni definiran.
Nato sem vključil stavek
Koda: |
#include "definicije.h" |
tudi na začetek datoteke "funkcije.c", vendar mi sedaj javi napako, da je WR definiran 2x.
Prosim, če kdo napiše kako to rešiti.
LP Matjaž
|
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.66 Kraj: Zagorje ob Savi
|
Objavljeno: Pon Jan 28, 2008 9:44 pm Naslov sporočila: |
|
|
Ponavadi se v te header datoteke napiše nekaj v stilu:
na začetku:
Koda: |
#ifndef __DATOTEKA_H__
#define __DATOTEKA_H__
|
na koncu:
Sem še enkrat prebral tvoj post, pa se mi zdi, da to ne bo rešilo tvojega problema (zadnje čase sem nekam površen, moram večkrat prebrat ). V c-ju lahko eno globalno spremenljivko z istim imenom definiraš samo enkrat, npr:
Če to isto spremenljivko uporabljaš še v kakšni drugem .c fajlu, potem mora ta .c nekje vidit definicijo te spremenljivke, označene z extern:
LP!
|
|
Nazaj na vrh |
|
 |
igo Član

Pridružen-a: Sre 11 Okt 2006 19:11 Prispevkov: 3641 Aktiv.: 16.01
|
Objavljeno: Pon Jan 28, 2008 9:49 pm Naslov sporočila: |
|
|
Ali prevajalnik podpira vgnezdene knjižnice?
definicije.h znotraj main.h se mi ne zdi najbolj posrečena rešitev.
Raje v nastajajočem programu napiši
include "definicije.h"
include "main.c"
include "funkcije.c"
Pa tisti "WR" ima zelo sumljivo ime. Zelo je podobno imenom raznih registrov,...
Jaz se izogibam imenom spremenljivk, ki imajo manj kot 6 črk, oziroma uporabljam takšna s 6, 7 ali 8 črkami. Če gre za kratico, je izpeljana iz slovenskih besed (Vhodi, Izhodi, NovCas, StejRB0,...).
LP,
Igor
POPRAVEK: .h in .c sem malo pomešal, zato odgovor ne ustreza najbolj...
_________________ Teoretično je praksa posledica teorije, praktično je pa ravno obratno. (igo 2001)
LP, Igor |
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.66 Kraj: Zagorje ob Savi
|
Objavljeno: Pon Jan 28, 2008 9:55 pm Naslov sporočila: |
|
|
Mislim, da trully ni vključil definicije.h znotraj main.h, ampak main.c
Drugače je zlato pravilo, da main kot .c fajl, ki vsebuje main() funkcijo, nima svojega .h fajla, ker je to nepotrebno in slaba praksa. Razen mogoče pri c++, kjer se ponavadi classi deklarirajo v header datoteki, implementirajo pa v cpp datoteki, pa še tu nima class kaj za delati v main.cpp ...
LP!
|
|
Nazaj na vrh |
|
 |
MarkoM Član

Pridružen-a: Tor 12 Sep 2006 15:29 Prispevkov: 2825 Aktiv.: 12.37 Kraj: Lovrenc na P.
|
|
Nazaj na vrh |
|
 |
chaos Član


Pridružen-a: Sob 16 Sep 2006 22:12 Prispevkov: 1063 Aktiv.: 4.66 Kraj: Zagorje ob Savi
|
Objavljeno: Pon Jan 28, 2008 10:18 pm Naslov sporočila: |
|
|
Hehe ... spet sem premalo pozorno bral ... kar sem napisal, velja za spremenljivko. Če uporabljaš definirano konstanto, ne bi smelo biti problema.
LP!
|
|
Nazaj na vrh |
|
 |
trully1 Član

Pridružen-a: Pet 14 Nov 2003 20:20 Prispevkov: 216 Aktiv.: 0.91 Kraj: Železniki
|
Objavljeno: Pon Jan 28, 2008 10:56 pm Naslov sporočila: |
|
|
Zdravo
Hvala vsem, težavo sem že rešil.
Težava je bila v tem, da se mi je znotraj "definicije.h" signal WR ponovil 2x vendar vsakič drugače.
Lenoba pač, sem vzel datoteko iz prejšnega projekta, pa sam mal novega not dodal.
LP Matjaž
|
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|