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