mplab C30 include funktion?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Mike
Inlägg: 6
Blev medlem: 9 oktober 2007, 22:38:01
Ort: malmö

Inlägg av Mike »

Själv använder jag inte MPLAB. Använder MPLAB en makefile? Isåfall borde du kunna se vilka header filer som inkluderas till varje objektfil i makefilen. Ett annat alternativ är att filerna kommer med genom direktiv till kompilatorn. Se om du kan hitta vilka options som används när du kallar på kompilatorn.

För att klargöra static och volatile:
static inne i en funktion betyder behåll värdet mellan funktionsanrop,
static utanför funktioner betyder bara synlig i denna fil.

Att static används för båda betydelse förvillar (någon som vet varför 'static' återanvänds?)

volatile betyder hämta alltid värdet från minnesutrymmet.

(dvs vi skippar optimeringar som 'det går nog snabbare om vi lagrar värdet i register A istället' eller 'denna variabel är ju 42 hela tiden, lika bra vi använder värdet 42')
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

> (någon som vet varför 'static' återanvänds?)
För att det är exakt samma funktion, fast den används olika beroende på om den är i en funktion eller i en modul?

F.ö. så är det inte säkert att headerfilerna finns i Makefilen, men ett vettigt IDE som sköter kontrollen av Makefile borde se till att alla dependenies finns med där. Men det är inget krav.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Använder MPLAB en makefile?

Använder och använder.
Den har en make-funktion inbyggt, och det finns ett menyval
för "Export makefile" (som jag dock aldrig har provat).
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Men den har ett eget format för själva "projektet"?
Men har den bara fullt kompatibelt make-stöd så är det iaf möjligt att använda en Makefile, vilket många gånger är ovärderligt.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

MPLAB har ett eget format för projekt-filen (.mcp).
Det är ett rent textformat, men det är inte i make format.
Och, som sagt, den kan exportera en make fil, om man vill...
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Jo, men det väsentliga är att den kan *nyttja* Makefiles. Inte bara exportera dom.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jag tror inte det, den gör ju i princip samma sak själv, fast internt...

EDIT: Jag antar att docs har detaljerna...
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

> i princip samma sak själv
Som man kan styra med en Makefile har jag mycket svårt att tro att en IDE täcker upp för allt. Jag har aldrig sett något i närheten.
Om man bara använder Makefile för att speca objektfiler för ett projekt så räcker stödet i IDE. Men Makefile är så mycket mer än så...

doc har nog svaret, men jag är inte så intresserad hur det egentligen ligger till eftersom jag inte har för avsikta att använda MPLAB.
Men det är helt klart en stor fördel *om* den stöder Makefiles fullt ut.
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Den gör vad den behöver... :-)
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Allt gör vad det behöver. Frågan är vilka behov som användare man har. Och den flexibilitet som finns med Makefiles har jag inte sett i någon IDE.
Inte sagt att man inte klarar sig utan, men då blir det lätt kompromisser i den form Icecap nämner tidigare i tråden.
BoF
EF Sponsor
Inlägg: 222
Blev medlem: 7 oktober 2006, 16:43:37

Inlägg av BoF »

>Att static används för båda betydelse förvillar (någon som vet varför 'static' återanvänds?)

Static betyder bara en sak, att den initieras bara en gång (vid kompilering). Den försvinner inte efter funktions anrop utan finns kvar och behåller sitt aktuella värde under hela programkörningen.

Räckvidden påverkas ju var man deklarerar variabeln, en variable får vid deklarering utanför funktioner globalt räckvidd i alla filer. Deklarerar man en static utanför funktionerna så får den begränsad räckvidd, kan bara användas av funktioner som ligger i samma fil och nedanför variabledefinitionen.

Den återanvänds inte utan finns under hela programkörningen.
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Tack för klargörandet. :)
Mike
Inlägg: 6
Blev medlem: 9 oktober 2007, 22:38:01
Ort: malmö

Inlägg av Mike »

>Static betyder bara en sak, att den initieras bara en gång (vid kompilering).

Jag vet inte om jag håller med..

Variablar i C har flera egenskaper och static ändrar olika egenskaper beroende på om den använd i en funktion eller utanför

1. I en funktion används static för att modifiera hur länge variabelns värde sparas
utan static skapas variabeln när man går in i blocket och förstörs när man går ut.
med static skapas variabeln och den finns kvar tills programmet slutar.
Tredje alternativert är när man allokerar minne (med malloc eller etc)

2. utanför metoden bestämmer static vilken linkage variabeln får. med static får den internal linkage och utan blir det external linkage. Är variabeln deklarerat i en funktion har den ingen linkage.

Andra egenskaper en variabel kan ha är 'scope' och namespace.

Men flåt att jag snodde tråden. Hur går det med MPLAB, har du kommit på var alla inkludefiler inkluderas? Du kanske kan söka igenom projektfilerna och se om du kan hitta var projektet lagrar dina includefiler
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Ytterligare en förklaring på samma sak fast med andra ord. Kanske mer korrekta facktermer dock.
(inser att jag själv blandar ihop definering/deklarering ibland)

En noggrann genomgång ges här för den som vill fördjupa sig ytterligare. :)

Däremot har jag aldrig hört talas om "namespace" annat än i C++-sammanhang. Det får gärna förklaras lite mer. Kanske i en ny tråd? :)
Skriv svar