<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META content="MSHTML 6.00.2900.5512" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY text=#000000 bgColor=#ffffff>
<DIV><FONT face=Arial size=2>Prikaz #define je vlastne jen textove makro, kdy se 
nejaky text ve zdrojovem kodu nahradi jinym textem jeste pred zahajenim 
samotneho prekladu.</FONT></DIV>
<DIV><FONT face=Arial size=2>Obecne lze pouzit temer kdykoli cokoliv, protoze 
vzdy lze pouzit pretypovani. V uvedenem pripade asi velky rozdil neni, ale 
slozitejsi je to tehdy, pokud prikazem #define rovnou definujete ukazatel na 
vicebytovy objekt (napr.: uint16_t*). Pricteni jednicky k takovemu ukazateli 
neznamena zvetseni adresy o "1", ale zvetseni ukazatele na dalsi objekt daneho 
typu, tzn. v uvedenem pripade se zvetsi adresa o "2", obecneji o 
"sizeof(uint16_t)". A to je potreba opravdu dusledne hlidat. Proto tady byl 
doporucovan zapis "&XX[yy]", tam je to (mozna) jasnejsi. Ale priznavam, ja 
osobne take  pouzivam radeji scitani konstant (ukazatelu) nez zapis pomoci 
indexu - "[yy]". Programatori "dospelych" programu mne urcite budou chtit take 
rovnou ukamenovat, ale mam pocit, ze pro lidi, kteri pisi programy pro 
mikrokontrolery a porad se prehrabuji v "adresach" je to takove logictejsi. 
Aritmetika ukazatelu ma sice mnoho nastrah, ale z meho pohledu jsou i horsi 
veci - to kdyz mikrokontroler neumi nacist 16-ti bitove cislo z liche adresy. A 
tady zadne kontroly v kompilatoru nepomohou - zvlaste, kdyz clovek zpracovava 
data nejakych komunikacnich protokolu, nejakou dobu to jede, pak "prijde" neco 
jineho a je z toho pad programu.</FONT></DIV>
<DIV><FONT face=Arial size=2>Ja naopak mam problem - pokud to mam zapsat jako 
index - musim si to nejdrive v hlave prevest. A mam dokonce pocit, ze ve 
slozitejsich pripadech delam daleko vice chyb v pouziti indexu nez pri prostem 
scitani ukazatelu. Na druhe strane me programy prekypuji (mnohdy nadbytecnymi) 
pretypovanimi a rozhodne nesetrim zavorkami! Davam je casto i tam, kde byt 
nemusi, ale nikdo se pak nemuze stezovat, ze nevi, co tim autor 
sledoval. Ale pocitam se spice mezi "prilezitoste" programatory, prestoze 
"C" pouzivam snad uz 25 let, tak prakticky vyhradne pro mikrokontrolery a neni 
to dohromady vic nez 1/3 pracovni doby. A priznavam na rovinu - po nekolika 
tydnech "pustu" casto znovu zvazuji prioritu nekterych operatoru. Tak radeji 
"zavorkuji" ...</FONT></DIV>
<DIV><FONT face=Arial size=2>A jak zde obsas zahlednu prispevky na tema "C" 
nekterych "nejmenovanych" clenu konference :-), tak mi pada celist a mam pocit, 
ze bych se mel jit hrozne rychle stydet nekde do tmaveho kouta ...</FONT></DIV>
<DIV><FONT face=Arial size=2>Martin. <A 
href="mailto:persich@transcon.cz">persich@transcon.cz</A></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT><FONT face=Arial size=2></FONT> </DIV>
<DIV><FONT face=Arial size=2></FONT> </DIV>
<DIV>----- Original Message ----- </DIV>
<BLOCKQUOTE 
style="PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
  <DIV 
  style="BACKGROUND: #e4e4e4; FONT: 10pt arial; font-color: black"><B>From:</B> 
  <A title=info@elektronikavyvoj.cz href="mailto:info@elektronikavyvoj.cz">Fanda 
  Kopriva</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=hw-list@list.hw.cz 
  href="mailto:hw-list@list.hw.cz">hwkonference</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Wednesday, January 07, 2015 5:16 
  PM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> Re: pointer v c</DIV>
  <DIV><BR></DIV>Dik za odpovedi<BR>nebyl mi tam jasny rozdil mezi ukazatelem na 
  promnennou <BR>a ukazatelem na cislo (define) coz asi neni obsah promnenne 
  ,ale cislo samo o sobe.<BR><BR>Predpokladam ,ze druhy zapis je obecnejsi 
  protoze muzu pouzit stejnou adresu pro ruzne<BR>typy dat?<BR><BR>#define 
  DATA_EEPROM_START_ADDR     ((unsigned char 
  *)0x08080000)<BR><BR>pepromuk = (unsigned char*)(DATA_EEPROM_START_ADDR + 
  epromadr);<BR><BR>  Fanda<BR>
  <DIV class=moz-forward-container><BR><BR>-------- Původní zpráva -------- 
  <TABLE class=moz-email-headers-table cellSpacing=0 cellPadding=0 border=0>
    <TBODY>
    <TR>
      <TH vAlign=baseline noWrap align=right>Předmět: </TH>
      <TD>pointer v c</TD></TR>
    <TR>
      <TH vAlign=baseline noWrap align=right>Datum: </TH>
      <TD>Tue, 06 Jan 2015 15:07:03 +0100</TD></TR>
    <TR>
      <TH vAlign=baseline noWrap align=right>Od: </TH>
      <TD>Fanda Kopriva <A class=moz-txt-link-rfc2396E 
        href="mailto:info@elektronikavyvoj.cz"><info@elektronikavyvoj.cz></A></TD></TR>
    <TR>
      <TH vAlign=baseline noWrap align=right>Komu: </TH>
      <TD>hwkonference <A class=moz-txt-link-rfc2396E 
        href="mailto:hw-list@list.hw.cz"><hw-list@list.hw.cz></A></TD></TR></TBODY></TABLE><BR><BR><PRE>Dobry den
jen bych poprosil o  ujasneni.


#define DATA_EEPROM_START_ADDR     0x08080000     //4Kb  16 X 256 BYTE
#define  LEDErezim   0x080803E0    //L  0 led neblika 1 led blika

void Reasetchar (unsigned long epromadr)
{
unsigned char *pepromuk;
unsigned char cis1;
pepromuk = DATA_EEPROM_START_ADDR + epromadr;
cis1 = *pepromuk++;
...........
...........
pepromuk = LEDErezim;
  if (*ppp>0) cis1 |=1;
}

dela to co ma ,ale prekladac hlasi pro radky
        pepromuk = DATA_EEPROM_START_ADDR + epromadr;
a
      pepromuk = LEDErezim;
upozorneni
                      Implicit conversion of int to ptr .

Jak by to melo byt spravne.

Dekuju Fanda


</PRE><BR></DIV><BR>
  <P>
  <HR>

  <P></P>_______________________________________________<BR>HW-list mailing 
  list  -  sponsored by 
  www.HW.cz<BR>Hw-list@list.hw.cz<BR>http://list.hw.cz/mailman/listinfo/hw-list<BR></BLOCKQUOTE></BODY></HTML>