Sida 2 av 2
Re: Hi-Tech och CCS, är coden alltid samma?
Postat: 9 februari 2009, 11:58:23
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.
Re: Hi-Tech och CCS, är coden alltid samma?
Postat: 9 februari 2009, 12:03:15
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++.
Re: Hi-Tech och CCS, är coden alltid samma?
Postat: 9 februari 2009, 12:40:11
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.
Re: Hi-Tech och CCS, är coden alltid samma?
Postat: 9 februari 2009, 13:33:26
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.