<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"Comic Sans MS";
        panose-1:3 15 7 2 3 3 2 2 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
p
        {mso-style-priority:99;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:Consolas;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Arial","sans-serif";
        color:navy;}
span.EmailStyle21
        {mso-style-type:personal-reply;
        font-family:"Comic Sans MS";
        color:navy;
        font-weight:normal;
        font-style:italic;
        text-decoration:none none;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:3.0cm 2.0cm 3.0cm 2.0cm;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=ES-AR link=blue vlink=blue>

<div class=Section1>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>Hi, I&#8217;m sort of a  newbie in C.<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>Not a newbie perhaps in time, but yes in the fact
that I program occasionnaly&#8230;<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>This discussion coincided for me with the start of
a project where I know I&#8217;ll have lots of flags, and wanted something to
manage them.<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>Everytime I started a project I thougth &#8220;well,
8 flags will be enough&#8221; and declared <o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>unsigned char ucflags<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'> #define FLAG1 BIT(0)<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>&#8230;<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>then, each time i wanted to set, reset or test this
flag I worked on the bit(0) of ucflags<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>but when I had more than 8 flags, then I have to
create another char named ucflags2 and each time I have to work on a specific
flag I have to remember if it corresponds to ucflags or ucflags2&#8230;<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>viewing this list, I realized I had to define 3 or
4 Macros for each flag: SET, CLEAR, TOGGLE and TEST <o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>As for the container for those flags, I thought
using an array of unsigned char whose length would be the ceiling of
NR_OF_FLAGS / 8<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>Then each flag is represented with two parameters,
the group to which it corresponds and the position in this byte<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>This is a sample  code I did to test this:<o:p></o:p></span></i></p>

<div style='mso-element:para-border-div;border:none;border-bottom:dotted windowtext 3.0pt;
padding:0cm 0cm 1.0pt 0cm'>

<p class=MsoNormal style='border:none;padding:0cm'><i><span lang=EN-US
style='font-size:14.0pt;font-family:"Comic Sans MS";color:navy'>********************************<o:p></o:p></span></i></p>

<p class=MsoNormal style='border:none;padding:0cm'><b><span lang=EN-US
style='font-size:10.0pt;font-family:"Courier New";color:black'>unsigned</span></b><span
lang=EN-US style='font-size:10.0pt;font-family:"Courier New";color:black'> <b>char</b>
ucflags[2];<br>
 #define FLAG1 0,0           <br>
 #define FLAG2 0,1<br>
 #define FLAG3 0,2<br>
 #define FLAG4 0,3<br>
 #define FLAG5 0,4<br>
 #define FLAG6 0,5<br>
 #define FLAG7 0,6<br>
 #define FLAG8 0,7<br>
 #define FLAG9 1,0<br>
 #define FLAG10 1,1<br>
 #define FLAG11 1,2<br>
 #define FLAG12 1,3<br>
 #define FLAG13 1,4<br>
 #define FLAG14 1,5<br>
 #define FLAG15 1,6<br>
 <br>
 <br>
#define _SET(x,y) (ucflags[x] |= 1&lt;&lt;y)<br>
#define SET(token) _SET(token)<br>
<br>
#define _CLEAR(x,y) (ucflags[x] &amp;= ~(1&lt;&lt;y))<br>
#define CLEAR(token) _CLEAR(token)<br>
<br>
#define _TOGGLE(x,y) (ucflags[x] ^= (1&lt;&lt;y))<br>
#define TOGGLE(token) _TOGGLE(token)<br>
<br>
#define _TEST(x,y) (ucflags[x] &amp; 1&lt;&lt;y)<br>
#define TEST(token) _TEST(token)<br>
<b>signed</b> <b>char</b> scfoo;<br>
<br>
<b>void</b> main(<b>void</b>)<br>
{<br>
 SET(FLAG1);<br>
 SET(FLAG9);<br>
 SET(FLAG11);<br>
 _SET(0,2);<br>
 <br>
 CLEAR(FLAG1);<br>
 CLEAR(FLAG9);<br>
 CLEAR(FLAG11);<br>
 </span><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New";
color:green'>/*<br>
<br>
   */</span><span lang=EN-US style='font-size:10.0pt;font-family:"Courier New";
color:black'><br>
<br>
 TOGGLE(FLAG1);<br>
 TOGGLE(FLAG9);<br>
 TOGGLE(FLAG11);<br>
 TOGGLE(FLAG3);<br>
   <br>
 <b>if</b>(TEST(FLAG1))<br>
   scfoo++;<br>
 <b>else</b><br>
   scfoo--; <br>
   <br>
 TOGGLE(FLAG1);<br>
                        <br>
}</span><i><span lang=EN-US style='font-size:14.0pt;font-family:"Comic Sans MS";
color:navy'><o:p></o:p></span></i></p>

</div>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'><o:p>&nbsp;</o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>This has been obtained by trial and error and there
are things that I´m not sure why they have to be that way. For example at first
I had only defined the macro _SET(x,y) and if I called it _SET(FLAG1) expecting
that FLAG1 would be replaced by 0,0 it complained about a mismatch in the number
of arguments, however if I call first SET(FLAG1) and then this macro calls _SET
then the arguments are correctly 0,0<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>Does anyone know why is this?<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'><o:p>&nbsp;</o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'>Ing. Abner Chamson<o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'><a href="http://www.mcreations.com.ar">www.mcreations.com.ar</a><o:p></o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'><o:p>&nbsp;</o:p></span></i></p>

<p class=MsoNormal><i><span lang=EN-US style='font-size:14.0pt;font-family:
"Comic Sans MS";color:navy'><o:p>&nbsp;</o:p></span></i></p>

<div>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0cm 0cm 0cm'>

<p class=MsoNormal><b><span lang=EN-US style='font-size:10.0pt;font-family:
"Tahoma","sans-serif"'>From:</span></b><span lang=EN-US style='font-size:10.0pt;
font-family:"Tahoma","sans-serif"'> icc-avr-bounces@imagecraft.com
[mailto:icc-avr-bounces@imagecraft.com] <b>On Behalf Of </b>Steven Lose<br>
<b>Sent:</b> Jueves, 05 de Julio de 2007 06:31 p.m.<br>
<b>To:</b> Discussion list for ICCAVR and ICCtiny Users. You do NOT need
tosubscribeto icc-announce if you are a member of this.<br>
<b>Subject:</b> SV: [Icc-avr] check for adequately nr. of bits<o:p></o:p></span></p>

</div>

</div>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal><a name=""><span lang=DA style='font-size:10.0pt;font-family:
"Arial","sans-serif";color:navy'>Hi John.</span></a><span lang=DA
style='font-size:10.0pt;font-family:"Arial","sans-serif";color:navy'><o:p></o:p></span></p>

<p class=MsoNormal><span lang=DA style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:navy'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:navy'>Alright, it&#8217;s not that I use more than 8 flags at the moment,
but I thought that at some point in time someone may in the other module raise
the defined nr. that in this module is the reason for the nr. of flags needed.
And then I have a memory leak.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:navy'>So the easiest way is only to accept inputs &lt; 8 for the flag
function. And then hope that it will become very clear that more space is
needed when the SW change does not work. <o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:navy'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:navy'>But&#8230;<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:navy'>An error message would be so nice.<o:p></o:p></span></p>

<p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:navy'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal><span lang=EN-GB style='font-size:10.0pt;font-family:"Arial","sans-serif";
color:navy'>Thanks.<o:p></o:p></span></p>

<div>

<p><span lang=EN-GB style='color:navy'>Med venlig hilsen / Best regards / mit
freundlich</span><span lang=DA style='color:navy'>en Grüßen<o:p></o:p></span></p>

<p><b><span lang=DA style='color:navy'>EC POWER A/S</span></b><span lang=DA
style='color:navy'><o:p></o:p></span></p>

<p><b><span lang=DA style='color:navy'>Steven Lose</span></b><span lang=DA
style='color:navy'><o:p></o:p></span></p>

<p><span lang=DA style='color:navy'>Software Ingeniør<o:p></o:p></span></p>

<p><span lang=DA style='color:navy'>Tlf.: +45 87434100<o:p></o:p></span></p>

<p><span lang=DA style='color:navy'>Direkte tlf. +45 58286608<o:p></o:p></span></p>

<p><span lang=DA style='color:navy'>Email: <a
href="blocked::mailto:bsl@ecpower.dk">sl@ecpower.dk</a><o:p></o:p></span></p>

<p><span lang=DA style='color:navy'><a href="http://www.ecpower.dk">www.ecpower.dk</a></span><span
lang=DA><o:p></o:p></span></p>

</div>

<div>

<div class=MsoNormal align=center style='text-align:center'><span lang=DA>

<hr size=2 width="100%" align=center>

</span></div>

<p class=MsoNormal><b><span lang=DA style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Fra:</span></b><span
lang=DA style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
icc-avr-bounces@imagecraft.com [mailto:icc-avr-bounces@imagecraft.com] <b>På
vegne af </b>John Baraclough<br>
<b>Sendt:</b> 5. juli 2007 23:00<br>
<b>Til:</b> Discussion list for ICCAVR and ICCtiny Users. You do NOT need
tosubscribe to icc-announce if you are a member of this.<br>
<b>Emne:</b> RE: [Icc-avr] check for adequately nr. of bits</span><span
lang=DA><o:p></o:p></span></p>

</div>

<p class=MsoNormal><span lang=DA><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal style='margin-bottom:12.0pt'><span lang=DA>You could indeed,
but it would be very unwise. Single bit flags should <b>always</b> be stored in
8-bit variables, otherwise there is a very large overhead in setting, clearing
or testing any flag. This is the way I define flag macros for fastest
execution:<br>
<br>
</span><span lang=DA style='font-family:"Courier New"'>#include
&lt;macros.h&gt;<br>
<br>
#define
SCR_BIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
0<br>
#define
RUN_BIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
1<br>
#define
SEN_BIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2<br>
#define
CHA_BIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3<br>
#define
UPD_BIT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
4<br>
<br>
<span style='color:green'>// Flow control flags.<br>
</span>#define
TEST_SCREEN_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags&amp;BIT(SCR)<br>
#define
SET_SCREEN_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags|=BIT(SCR)<br>
#define
CLEAR_SCREEN_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags&amp;=~BIT(SCR)<br>
<br>
#define
TEST_RUN_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags&amp;BIT(RUN)<br>
#define
SET_RUN_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags|=BIT(RUN)<br>
#define
CLEAR_RUN_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags&amp;=~BIT(RUN)<br>
<br>
#define
TEST_SEND_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags&amp;BIT(SEN)<br>
#define
SET_SEND_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags|=BIT(SEN)<br>
#define
CLEAR_SEND_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags&amp;=~BIT(SEN)<br>
<br>
#define
TEST_CHANGE_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags&amp;BIT(CHA)<br>
#define
SET_CHANGE_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags|=BIT(CHA)<br>
#define
CLEAR_CHANGE_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags&amp;=~BIT(CHA)<br>
<br>
#define TEST_UPDATE_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags&amp;BIT(UPD)<br>
#define
SET_UPDATE_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags|=BIT(UPD)<br>
#define
CLEAR_UPDATE_FLAG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
gucFlags&amp;=~BIT(UPD)<br>
<br>
</span><span lang=DA>Whichever way you choose, stay with 8-bit variable as the
holders for flags.<br>
<br>
HTH<br>
<br>
All the best for now,<br>
John<br>
<br>
At 21:13 05/07/2007, you wrote:<o:p></o:p></span></p>

<p class=MsoNormal><span lang=DA style='color:blue'>couldn't you simply say<br>
</span><span lang=DA>&nbsp;<br>
<span style='color:blue'>#if </span></span><span lang=DA style='font-size:10.0pt'>NROFFLAGS&lt;17<br>
<br>
Unsigned int uiFlags;<br>
<br>
#else<br>
<br>
Unsigned long uiFlags;<br>
#endif<br>
</span><span lang=DA>&nbsp;<br>
</span><span lang=DA style='font-size:10.0pt'>Albert<br>
</span><span lang=DA>&nbsp;<br>
&nbsp;<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt;font-family:"Tahoma","sans-serif"'>-----Original Message-----<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt;font-family:"Tahoma","sans-serif"'>From: Jaspers, Ton [<a
href="mailto:t.jaspers@cpseurope.com"> mailto:t.jaspers@cpseurope.com</a>]<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt;font-family:"Tahoma","sans-serif"'>Sent: Friday, 6 July 2007 12:45 a.m.<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt;font-family:"Tahoma","sans-serif"'>To: Discussion list for ICCAVR and
ICCtiny Users. You do NOT need to subscribeto icc-announce if you are a member
of this.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt;font-family:
"Tahoma","sans-serif"'>Subject: RE: [Icc-avr] check for adequately nr. of bits</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA>I don't think it is
a linker issue. It is a coding issue. You could try to use teh pre-processor
with something like this:<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA>&nbsp;<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt'>&nbsp;&nbsp;&nbsp; #include &lt;limits.h&gt;</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA>&nbsp;<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt'>&nbsp;&nbsp;&nbsp; #define NROFFLAGS 17</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA>&nbsp;<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt'>&nbsp;&nbsp;&nbsp; #if&nbsp; (1&lt;&lt;(NROFFLAGS-1)) &gt;&nbsp;
UINT_MAX</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA>&nbsp;&nbsp;&nbsp;&nbsp;
ERROR &#8220;VALUE TO SMALL&#8221;&nbsp;&nbsp;&nbsp; <o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>&nbsp;&nbsp;&nbsp;
#endif</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt'>Mind you, I have not tried it.</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA>&nbsp;<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt'>Cheers,<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt'>Ton</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA>&nbsp;<o:p></o:p></span></p>

<div style='margin-left:36.0pt'>

<div class=MsoNormal align=center style='text-align:center'><span lang=DA>

<hr size=2 width="100%" align=center>

</span></div>

</div>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt;font-family:"Tahoma","sans-serif"'>From: icc-avr-bounces@imagecraft.com [<a
href="mailto:icc-avr-bounces@imagecraft.com">
mailto:icc-avr-bounces@imagecraft.com</a>] On Behalf Of Steven Lose<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt;font-family:"Tahoma","sans-serif"'>Sent: donderdag 5 juli 2007 12:59<o:p></o:p></span></p>

<p class=MsoNormal style='margin-left:36.0pt'><span lang=DA style='font-size:
10.0pt;font-family:"Tahoma","sans-serif"'>To: Discussion list for ICCAVR and
ICCtiny Users. You do NOT need tosubscribeto icc-announce if you are a member
of this.<o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt;font-family:
"Tahoma","sans-serif"'>Subject: [Icc-avr] check for adequately nr. of bits</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>Hi.</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>&nbsp;</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>I want to
make the linker check that a variable is defined big enough, but don&#8217;t
know how.</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>&nbsp;</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>Basically I
need something that tells me how many bits there is in a variable so I can check
it up against a defined value.</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>&nbsp;</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>#define
NROFFLAGS 17</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>&nbsp;</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>Unsigned int
uiFlags;</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>&nbsp;</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>#if NROFFLAGS
&gt; NROFBITS(uiFlags)</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>&nbsp;ERROR
&#8220;VALUE TO SMALL&#8221;</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>#endif</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>&nbsp;</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>Is it
possible to do so? (if it had been in code I would just use (sizeof(uiFlags)*8)
)</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>And if yes,
what is the right way to do it?</span><span lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='font-size:10.0pt'>&nbsp;</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA>Med venlig hilsen / Best regards / mit
freundlichen Grüßen<o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='color:navy'>EC POWER A/S</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA style='color:navy'>Steven Lose</span><span
lang=DA><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA>Software Ingeniør<o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA>Tlf.: +45 87434100<o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA>Direkte tlf. +45 58286608<o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA>Email: <a
href="blocked::mailto:bsl@ecpower.dk">sl@ecpower.dk</a><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA><a href="http://www.ecpower.dk/">www.ecpower.dk</a><o:p></o:p></span></p>

<p class=MsoNormal style='mso-margin-top-alt:0cm;margin-right:0cm;margin-bottom:
12.0pt;margin-left:36.0pt'><span lang=DA>&nbsp;<o:p></o:p></span></p>

<p class=MsoNormal><span lang=DA>_______________________________________________<br>
Icc-avr mailing list<br>
Icc-avr@imagecraft.com<br>
<a href="http://dragonsgate.net/mailman/listinfo/icc-avr">http://dragonsgate.net/mailman/listinfo/icc-avr</a><o:p></o:p></span></p>

</div>

</body>

</html>