Får inte EQU att fungera i HI-TECH C
Får inte EQU att fungera i HI-TECH C
JAg försöker skriva en "EQU-definition" i mitt C-program enligt:
SEEKTIME EQU 1000
Men det går inte att kompilera.
Jag får varning: missing basic type; int assumed
error: "," expected
error: ";" expected
I manualen står det: "4.3.8.5 EQU
This pseudo-op defines a symbol and equates its value to an expression. For example
thomas EQU 123h
The identifier thomas will be given the value 123h. EQU is legal only when the symbol has not
previously been defined."
Och den har inte blivit definerad förut.
Jag skriver raden i början av koden efter att konfigurationsbitarna sätts.
Om jag byter ut dem mot static så funkar det. Men vad innebär det egentligen? Tar de upp minne i processorn som variabler?
SEEKTIME EQU 1000
Men det går inte att kompilera.
Jag får varning: missing basic type; int assumed
error: "," expected
error: ";" expected
I manualen står det: "4.3.8.5 EQU
This pseudo-op defines a symbol and equates its value to an expression. For example
thomas EQU 123h
The identifier thomas will be given the value 123h. EQU is legal only when the symbol has not
previously been defined."
Och den har inte blivit definerad förut.
Jag skriver raden i början av koden efter att konfigurationsbitarna sätts.
Om jag byter ut dem mot static så funkar det. Men vad innebär det egentligen? Tar de upp minne i processorn som variabler?
Re: Får inte EQU att fungera i HI-TECH C
Kan det månne vara för att EQU inte är en C-kommando?
Testa istället:
#define SEEKTIME 1000
Edit: såg att den påstås klara av det men jag undrar vad man ska ha det till, det är inte C-syntax och stoppar export.
Mer edit: Jahopp, det är ju inte ett C-direktiv.
Testa istället:
#define SEEKTIME 1000
Edit: såg att den påstås klara av det men jag undrar vad man ska ha det till, det är inte C-syntax och stoppar export.
Mer edit: Jahopp, det är ju inte ett C-direktiv.
Senast redigerad av Icecap 20 maj 2009, 14:59:55, redigerad totalt 1 gång.
Re: Får inte EQU att fungera i HI-TECH C
> I manualen står det: "4.3.8.5 EQU....
> Chapter 4, Macro Assembler
> 4.3 HI-TECH C Assembly Language
> 4.3.8 Assembler Directives
> 4.3.8.5 EQU
Vet du vad du håller på med ?
> Chapter 4, Macro Assembler
> 4.3 HI-TECH C Assembly Language
> 4.3.8 Assembler Directives
> 4.3.8.5 EQU
Vet du vad du håller på med ?
Re: Får inte EQU att fungera i HI-TECH C
Nej, och det ska du vara glad för. Hade det gått kompilera hade du haft en *rejält* trasig C-kompilator...StRob skrev:JAg försöker skriva en "EQU-definition" i mitt C-program enligt:
SEEKTIME EQU 1000
Men det går inte att kompilera.
"#define SEEKTIME 1000" är det du söker.
Re: Får inte EQU att fungera i HI-TECH C
> Vet du vad du håller på med?
JAg vet vad jag vill göra och jag har gjort det för länge sen, men minns inte exakt hur. Hade jag vetat hade troligtvis frågan inte hamnat här, eller hur?
Jag anade att det var assemblerkommandon.
Jag försökte med #define oxå men utan framgång. Men jag gjorde nog något annat fel (använde ; kanske), för nu fungerar det fint.
En annan fråga i ämnet, (se koden nedan)
#define I 3
#define J 8
unsigned char temp=11+I+J; //Tar denna raden längre tid att exekvera än om jag skrev unsigned char temp=22;?
Kompilatorn översätter det så det blir samma sak va?
JAg vet vad jag vill göra och jag har gjort det för länge sen, men minns inte exakt hur. Hade jag vetat hade troligtvis frågan inte hamnat här, eller hur?

Jag anade att det var assemblerkommandon.
Jag försökte med #define oxå men utan framgång. Men jag gjorde nog något annat fel (använde ; kanske), för nu fungerar det fint.
En annan fråga i ämnet, (se koden nedan)
#define I 3
#define J 8
unsigned char temp=11+I+J; //Tar denna raden längre tid att exekvera än om jag skrev unsigned char temp=22;?
Kompilatorn översätter det så det blir samma sak va?
Re: Får inte EQU att fungera i HI-TECH C
Beräkningar vid variabelinitiering sker vid kompileringstillfället.
Om man vill veta exekveringstider får man simulera eller profilera. Hur lång källkoden är har nästan inget med exekeringstid att göra. Optimeringen i kompilatorn brukar dessutom stuva om rätt ordentligt.
Man skiver för klarhet och läsbarhet så att man så lätt som möjligt kan underhålla sitt program, och låter kompilatorn och verktygen göra jobbet.
Om man vill veta exekveringstider får man simulera eller profilera. Hur lång källkoden är har nästan inget med exekeringstid att göra. Optimeringen i kompilatorn brukar dessutom stuva om rätt ordentligt.
Man skiver för klarhet och läsbarhet så att man så lätt som möjligt kan underhålla sitt program, och låter kompilatorn och verktygen göra jobbet.
Re: Får inte EQU att fungera i HI-TECH C
> Jag anade att det var assemblerkommandon.
Tja, eftersom det stog under "4.3.8 Assembler Directives" så
var det väl inte så mycket att gissa om...

Tja, eftersom det stog under "4.3.8 Assembler Directives" så
var det väl inte så mycket att gissa om...


Re: Får inte EQU att fungera i HI-TECH C
Såg inte det. Jag sökte i pdf:en bara. Visste att jag använt EQU någon gång till just det så jag sökte för att se hur syntaxen såg ut..