definice externi konstanty v C
Michal HW
michalgregor@centrum.cz
Úterý Prosinec 4 13:36:13 CET 2007
Pouzit jiny kompilator..
Vadi tolik tech par instrukci navic?
Michal
----- Original Message -----
From: Hynek Sladky
To: HW-news
Sent: Tuesday, December 04, 2007 1:23 PM
Subject: Re: definice externi konstanty v C
Jak uz jsem psal:
extern unsigned char konst_maska;
se pouzije jako odkaz na promennou, nikoli jako vlastni konstanta.
Tj. provede se cosi jako
ld e,(konst_maska)
or e
misto rovnou pouziti (cehoz bych chtel dosahnout):
or konst_maska
Otazka tedy zustava: jak rict kompilatoru, ze dany identifikator je
externe definovana konstanta (nikoli externe definovana konstantni
promenna)?
Hynek Sladky
Miroslav Sinko wrote:
> ako som uz pisal:
>
> extern typ meno_konstanty;
>
> Je to pre kompilator informacia, ze premenna tohto mena a typu existuje
> v inom module (zdrojak, lib, obj). Teda kompilator sa o nu dalej
> nestara, az linker.
>
> miro
>
>
>
> --- Hynek Sladky <econf@centrum.cz> wrote:
>
>
>>Diky,
>>
>>jenze #define se zpracuje pri kompilaci, nikoli az pri linkovani, coz
>>
>>prave potrebuju.
>>
>>Linker umi to, co chci (viz priklad s assemblerem), ale nevim, jak v
>>C
>>napsat, aby to pak spravne slinkoval...
>>
>>Hynek Sladky
>>
>>
>>Richard Kaliciak wrote:
>>
>>>Dobry den,
>>>
>>>pouzite #define, napr.
>>>
>>>#define TIMER0PRESCALE 0x04 ///< timer 0 prescaler default
>>>
>>>nozete si vytvorit jeden subor hw_config.h, kde si definujete
>>
>>potrebne
>>
>>>veci a potom ho vsade #include-jete:
>>>
>>>----------------------------------
>>>#ifndef HW_CONFIG_H
>>>#define HW_CONFIG_H
>>>
>>>#define TIMER0PRESCALE 0x04 ///< timer 0 prescaler default
>>>
>>>#define LCD_CTRL_RS 0
>>>#define LCD_CTRL_RW 1
>>>#define LCD_CTRL_E 2
>>>
>>>#endif
>>>----------------------------------
>>>
>>>Richard Kaliciak
>>>
>>>
>>>Hynek Sladky schrieb:
>>>
>>>
>>>>Dobry den,
>>>>
>>>>jak definovat externi konstantu v C?
>>>>
>>>>Mam knihovni funkci, ktera (zavisle podle HW na kterem bezi)
>>
>>potrebuje
>>
>>>>slinkovat s ruznymi konstantami.
>>>>Napr.
>>>> NejakyReg |= konst_maska;
>>>>
>>>>pokud definuju
>>>>const unsigned char konst_maska=0x20;
>>>>tak se vytvori 8-bit promenna v casti pro kod.
>>>>
>>>>Pritom pokud bych pouzil assembler, tak toto mozne je:
>>>>XREF _konst_maska
>>>>in a,(NejakyReg)
>>>>or _konst_maska
>>>>out (NejakyReg),a
>>>>
>>>>Jenze pouzitim assembleru v C zdrojaku se zdrojak stava znacne
>>>>neprehlednym, tak bych to radsi udelal rovnou v C, pokud to je
>>
>>mozne...
_______________________________________________
HW-list mailing list - sponsored by www.HW.cz
Hw-list@list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list
------------- další část ---------------
HTML příloha byla odstraněna...
URL: http://list.hw.cz/pipermail/hw-list/attachments/20071204/74b87b75/attachment-0002.htm
Další informace o konferenci Hw-list