Sida 1 av 1
Får inte EQU att fungera i HI-TECH C
Postat: 20 maj 2009, 13:38:38
av StRob
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?
Re: Får inte EQU att fungera i HI-TECH C
Postat: 20 maj 2009, 13:40:07
av Icecap
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.
Re: Får inte EQU att fungera i HI-TECH C
Postat: 20 maj 2009, 14:09:21
av sodjan
> 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 ?
Re: Får inte EQU att fungera i HI-TECH C
Postat: 20 maj 2009, 18:00:08
av bos
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.
Nej, och det ska du vara glad för. Hade det gått kompilera hade du haft en *rejält* trasig C-kompilator...
"#define SEEKTIME 1000" är det du söker.
Re: Får inte EQU att fungera i HI-TECH C
Postat: 25 maj 2009, 13:19:21
av StRob
> 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?
Re: Får inte EQU att fungera i HI-TECH C
Postat: 25 maj 2009, 13:47:52
av SvenW
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.
Re: Får inte EQU att fungera i HI-TECH C
Postat: 25 maj 2009, 13:55:30
av sodjan
> 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...

Re: Får inte EQU att fungera i HI-TECH C
Postat: 25 maj 2009, 14:01:51
av StRob
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..