skillnad mellan C och C++
Att inte ASM kommit upp kan bero på att orginalfrågan lydde "Jag undrar vad skillnaden mellan att programmera i C++ och C är", men det är ju klart värt att nämna när man ska börja med uC.
Sedan förstod jag läraren som att han lärde ut för PC-programmering, men att petterp hade tänkt nyttjat den kursens lärdom till uC-programmering. Därav kan jag förstå att läraren pratade om fördelarna med C++, särskilt om man ska programmera för Windows.
Sedan förstod jag läraren som att han lärde ut för PC-programmering, men att petterp hade tänkt nyttjat den kursens lärdom till uC-programmering. Därav kan jag förstå att läraren pratade om fördelarna med C++, särskilt om man ska programmera för Windows.
Jag nämde de att jag skulle andvända kunskaperna till µC men jag vill ha så stor nytta av dem som möjligt.
Läraren jag pratar med håller inte någon kurs (inte för tillfället iallafall). Men han har kunskap i ämnet hoppas jag
Nu för tillfället har jag en bok som lär ut C++ på 3veckor och där påstår de att man ska helt glömma bort allt man har lärt sig i C.
Får fortsätta med C++ och "glömma" (när man programmerar) det överflödiga.
Läraren jag pratar med håller inte någon kurs (inte för tillfället iallafall). Men han har kunskap i ämnet hoppas jag

Nu för tillfället har jag en bok som lär ut C++ på 3veckor och där påstår de att man ska helt glömma bort allt man har lärt sig i C.
Får fortsätta med C++ och "glömma" (när man programmerar) det överflödiga.
Med risk för att vara tjatig säger jag:
Använd C för mikroprocessorer och C++ för windowsprogram.
De flesta C++ lärare har inte en aning om begränsningarna i en mikroprocessor och det är säkert därför han tycker du ska använda C++.
Man ska inte glömma C när man programmerar i C++ eftersom C++ är just C ++ (dvs C + 1). Det man skriver i C kan man flytta över direkt till C++, men inte omvänt.
Största skillnaden mellan C och C++ är just klasser. Men man kan struktera C kod som klasser i C++.
Till exempel:
Så mitt tips: lär dig C++ och struktera sedan C koden som C++.
Använd C för mikroprocessorer och C++ för windowsprogram.
De flesta C++ lärare har inte en aning om begränsningarna i en mikroprocessor och det är säkert därför han tycker du ska använda C++.
Man ska inte glömma C när man programmerar i C++ eftersom C++ är just C ++ (dvs C + 1). Det man skriver i C kan man flytta över direkt till C++, men inte omvänt.
Största skillnaden mellan C och C++ är just klasser. Men man kan struktera C kod som klasser i C++.
Till exempel:
Kod: Markera allt
C
I filen klass1.h:
// Definitioner
void Klass1_Init();
void Klass1_Main();
I filen klass1.c:
void Klass1_Init()
{
// kod
}
void Klass1_Main()
{
// kod
}
C++:
I filen Klass1.h:
class Klass1
{
void Init();
void Main();
}
I filen Klass1.cpp:
void Klass1::Init()
{
// kod
}
void Klass1::Main()
{
// kod
}
-
- Inlägg: 521
- Blev medlem: 31 maj 2003, 10:42:37
- Ort: Helsingborg
På jobb kör vi IARs Embedded C++ på M16C, 48-128k. Argumenten för C++ är många, argumentet mot är ett: större kod. Personligen skulle jag rekommendera alla som kör lite större projekt och har en vettig C++-kompilator för sin arkituktur att använda C++.
En C++-kompilator är striktare och gör att man undviker en hel del C-konstruktioner som kan generera problem (C och C++ är inte samma språk).
Objektorientering görs bäst i ett objektorienterat språk (eller ett språk som har stöd för det, C++ är inte strikt objektorienterat).
Vill du höja kvaliten på din C-kod, kör den genom en C++-kompilator.
Sen visade det sig att en 128k M16C28 var billigare än 96k-varianten pga att 128k gick i större volymer. Så det är inte alltid sant att utrymme kostar.
Sen kan det vara så att assembler har sin plats ett system så som C har sin och C++ har sin. Men att göra en avancerad tillståndsmaskin i assembler blir bara oläsligt och svårt att underhålla.
Men är man ny på mikrokontrollers så är det C som gäller, alternativt assembler om uppgiften är isolerad och begränsad.
En C++-kompilator är striktare och gör att man undviker en hel del C-konstruktioner som kan generera problem (C och C++ är inte samma språk).
Objektorientering görs bäst i ett objektorienterat språk (eller ett språk som har stöd för det, C++ är inte strikt objektorienterat).
Vill du höja kvaliten på din C-kod, kör den genom en C++-kompilator.
Sen visade det sig att en 128k M16C28 var billigare än 96k-varianten pga att 128k gick i större volymer. Så det är inte alltid sant att utrymme kostar.
Sen kan det vara så att assembler har sin plats ett system så som C har sin och C++ har sin. Men att göra en avancerad tillståndsmaskin i assembler blir bara oläsligt och svårt att underhålla.
Men är man ny på mikrokontrollers så är det C som gäller, alternativt assembler om uppgiften är isolerad och begränsad.
Jag hade gärna sett lite längre utlägg kring vissa påståenden;
> En C++-kompilator är striktare och gör att man undviker en hel del C-konstruktioner som kan generera problem
Kan du ge något exempel?
> Vill du höja kvaliten på din C-kod, kör den genom en C++-kompilator.
Vad menar du här? Att den varnar för mer, eller att den optimerar koden bättre?
> En C++-kompilator är striktare och gör att man undviker en hel del C-konstruktioner som kan generera problem
Kan du ge något exempel?
> Vill du höja kvaliten på din C-kod, kör den genom en C++-kompilator.
Vad menar du här? Att den varnar för mer, eller att den optimerar koden bättre?
Visst går det att köra med C++ på µC men det beror helt på vad du tänkt göra för att veta om C++ är bästa valet. Dock har man som hobbyist inte alltid problemet med att man måste optimera så hårt och se till att välja rätt från början så det går nog bra vilket du än väljer.
Har precis avslutat ett projekt på en freescale powerpc 233mhz som vi gjorde majoriteten i C++. Ca 120k rader C++ och 20k rader C. Sedan en drös XML mm.
Det låter som du är hyffsat ny på µC och inte vill betala en massa för utvecklingsmiljöer och kompilatorer. Jag skulle råda dig att först testa assembler för att förstå vad tusan µCn pysslar med (klockcykler, register etc) Sedan köra C som det finns gott om information på nätet om. Gärna lära dig att koda de tids/minnes-kritiska delarna i ASM och göra programstrukturen i C.
Jag har kört ett C++ projekt på AVR med winavr och visst fungerar det. Nu är dock min personliga uppfattning att C++ är bra i stora projekt med lite mer minne att leka med och stor mängd kod att hålla koll på. En blandning av C och ASM är klockrent på µC.
Om du kör winavr så fixar du "Krets" och "Kristall" enkelt med MFile-verktyget som följer med. Kort kan sägas att dessa anges med variabler i makefilerna som du får ändra själv eller med verktyget. Det är även i makefilerna som du får ställa in C eller C++.
För övrigt så kan du ju även köra basic på µC.
Gör man ett litet projekt bara för kul så använd vad som verkar roligt. Det är en helt annan sak om du skall göra något seriöst som skall ut på marknaden, underhållas i 20 år och dessutom skall vara säkerhetsklassat.
Har precis avslutat ett projekt på en freescale powerpc 233mhz som vi gjorde majoriteten i C++. Ca 120k rader C++ och 20k rader C. Sedan en drös XML mm.
Det låter som du är hyffsat ny på µC och inte vill betala en massa för utvecklingsmiljöer och kompilatorer. Jag skulle råda dig att först testa assembler för att förstå vad tusan µCn pysslar med (klockcykler, register etc) Sedan köra C som det finns gott om information på nätet om. Gärna lära dig att koda de tids/minnes-kritiska delarna i ASM och göra programstrukturen i C.
Jag har kört ett C++ projekt på AVR med winavr och visst fungerar det. Nu är dock min personliga uppfattning att C++ är bra i stora projekt med lite mer minne att leka med och stor mängd kod att hålla koll på. En blandning av C och ASM är klockrent på µC.
Om du kör winavr så fixar du "Krets" och "Kristall" enkelt med MFile-verktyget som följer med. Kort kan sägas att dessa anges med variabler i makefilerna som du får ändra själv eller med verktyget. Det är även i makefilerna som du får ställa in C eller C++.
För övrigt så kan du ju även köra basic på µC.
Gör man ett litet projekt bara för kul så använd vad som verkar roligt. Det är en helt annan sak om du skall göra något seriöst som skall ut på marknaden, underhållas i 20 år och dessutom skall vara säkerhetsklassat.