Hi-Tech och CCS, är coden alltid samma?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
bearing
Inlägg: 11677
Blev medlem: 2 mars 2006, 01:01:45
Ort: Ängelholm

Re: Hi-Tech och CCS, är coden alltid samma?

Inlägg av bearing »

Kan det vara så att de "inte tänkte på" att C kan användas på 8-bitarsmaskiner, när de skrev standarden?
För enligt det första citatet är ju 8-bitars int naturligt på PIC16.
TomasL skrev:bearing, detta skapar då jätteproblem, om du skall byta målprocessor eller utvecklingsmiljö.
Ja, det tror jag också. Är nog bättre att skriva int16, istället för long, vid utveckling på CC5X.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Hi-Tech och CCS, är coden alltid samma?

Inlägg av Icecap »

TomasL: nej, faktisk inte! Att det finns en BOOL i vissa kompilatorer betyder INTE att det finns i alla! T.ex. finns BOOL inte i SofTune (Fujitsu's kompiler) och inte i HEW (Renesas' kompiler) och BOOL ingår, efter vad jag vet, inte som en standard C variabeltyp, 'int' är tänkt som den funktion i standard C.

Jag har för mig att BOOL först kom med C++.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 47013
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Hi-Tech och CCS, är coden alltid samma?

Inlägg av TomasL »

Jag vet att bool inte är standard, utan att man brukar typdefa den, då den är rätt behändig.

det var snarare den här meningen som jag tänkte på
int i C är avsedd som en "strövariabel" som är avsedd att överföra enkla värden (SANT/FALSK)
Vuilket inte stämmer, snarare stämmer det på BOOL istället (om man har typdefat BOOL förståss).

bearing, förstår inte varför man gör sådana avsteg från standarden.
Vill man ha 8-bitars variabler, så kan man ju använda en "char", antingen "Unsigned" eller "signed"
det skapar ju bara en oerhörd massa kompabilitetsproblem.
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Hi-Tech och CCS, är coden alltid samma?

Inlägg av Icecap »

/* MyDef.h */

#ifdef __COMPILER_FCC907__
typedef unsigned char BYTE;
typedef unsigned int WORD;
typedef unsigned long DWORD;
#endif /* __COMPILER_FCC907__ */

På det vis kan man specialdesigna sina variabler till att vara lika oavsett vilken kompiler man använder.

Och mitt utsago stämmer alldeles väl! Att DU kanske vill typedef'a en BOOL till detta är DITT val, i C var int tänkt till lite av varje som inte behövde vara med högre värde än 255, om det är 0/1, SANT/FALSK, 1, 8, 11 eller 200 har knappast betydelse.
Skriv svar