[Icc-avr] Error message
Paul Mateer
paul.aa9gg at gmail.com
Wed Sep 5 14:50:41 PDT 2007
Hi All.....
I too do this:
In main file:
unsigned char myVar=0;
In other files:
extern unsigned char myCar ; /* no initialisation, it is initialised
where it ios defined only */
I have one file called RAM0.h with the initial declaration and then
RAM1.hwith the extern declaration. In my main file I include
RAM0.h and then in all others include RAM1.h
73 de Paul, AA9GG
On 9/4/07, Steven Lose <sl at ecpower.dk> wrote:
>
> Hi.
>
>
>
> I also use the Get & Set functions to exchange values between the c files,
> never use extern.
>
>
>
> Unsigned char GetEngineTemperature(void)
>
> {
>
> Return ucEngineTemperature;
>
> }
>
>
>
> The above Is very simple and I sometimes wonder if Richard could get the
> compiler to optimise the functions away so the asm code does not perform
> calls to do it.
>
> (but maybe there is reasons for keeping the call)
>
>
>
> Richard, I remember a lot of talk about inline functions as well, is it in
> the pipeline somewhere?
>
> Med venlig hilsen / Best regards / mit freundlichen Grüßen
>
> *EC POWER A/S*
>
> *Steven Lose*
>
> Software Ingeniør
>
> Tlf.: +45 87434100
>
> Direkte tlf. +45 58286608
>
> Email: sl at ecpower.dk
>
> www.ecpower.dk
> ------------------------------
>
> *Fra:* icc-avr-bounces at imagecraft.com [mailto:
> icc-avr-bounces at imagecraft.com] *På vegne af *Daub, Stephan
> *Sendt:* 4. september 2007 10:57
> *Til:* Discussion list for ICCAVR and ICCtiny Users. You do NOT
> needtosubscribeto icc-announce if you are a member of this.
> *Emne:* AW: [Icc-avr] Error message
>
>
>
> Hi Derek,
>
>
>
> this
>
>
>
> #idndef __AABB_H__ /* Avoids multiple inclusion */
>
> #define __AABB_H__
>
> <something>
>
> #endif /* end of #ifndef __AABB_H__ , at end of file */
>
>
>
> construct is to avoid more than one execution of <something> if this .h
> file is included in more than one .c file....
>
> I think it's a standard K&R C recommendation....
>
> I re-use a standard template for .h files which include such a contruct;
> this is to help-and-use-but-not-worry-anymore on your .h files.
>
>
>
>
>
> @Ton: I like your approach very much; I always try to organize my projects
> in that way.
>
> IMHO and not 100% serious: if many more people had followed that way
> (instead of C-spaghetti code) the OO-hype won't be there ;)
>
>
>
> Best, Stephan
>
>
> ------------------------------
>
> *Von:* icc-avr-bounces at imagecraft.com [mailto:
> icc-avr-bounces at imagecraft.com] *Im Auftrag von *Robertson, Derek
> *Gesendet:* Dienstag, 4. September 2007 10:13
> *An:* Discussion list for ICCAVR and ICCtiny Users. You do NOT
> needtosubscribeto icc-announce if you are a member of this.
> *Betreff:* RE: [Icc-avr] Error message
>
>
>
> Presumably the myCar, myVar in this post is a typing error?
>
>
>
> Ton, I get your 'Object' approach, but I don't understand what this is for
>
>
>
> #idndef __AABB_H__ /* Avoids multiple inclusion */
>
> #define __AABB_H__
>
>
>
> I feel there may be a moment of enlightenment coming on! :o)
> ------------------------------
>
> *From:* Jaspers, Ton [mailto:t.jaspers at cpseurope.com]
> *Sent:* 04 September 2007 08:40
> *To:* benra at imt.liu.se; Discussion list for ICCAVR and ICCtiny Users. You
> do NOT need to subscribeto icc-announce if you are a member of this.
> *Subject:* RE: [Icc-avr] Error message
>
> Close but I rather use this:
>
>
>
> In main file:
> unsigned char myVar=0;
>
> In other files:
> extern unsigned char myCar ; /* no initialisation, it is
> initialised where it ios defined only */
>
>
>
> Further more I would suggest to put the external in a header file.
>
> If the declaration is in "aabb.c" then put the external in "aabb.h" like
> this:
>
>
>
> #idndef __AABB_H__ /* Avoids multiple inclusion */
>
> #define __AABB_H__
>
>
>
> extern unsigned char myCar ;
>
>
>
>
>
> #endif /* end of #ifndef __AABB_H__ , at end of file */
>
>
>
>
>
> Personally I hate externals. I like to think in objects.
>
> The aabb.c file should provide an access methode (function) to access the
> myCar variable.
>
> In the "aabb.h" header file it would like something like this:
>
>
>
>
>
> #idndef __AABB_H__ /* Avoids multiple inclusion */
>
> #define __AABB_H__
>
>
>
> unsigned char readMyCar(void) ;
>
> int writeMyCar(unsigned char);
>
> #endif /* end of #ifndef __AABB_H__ , at end of file */
>
>
>
> These access methodes provide a well controlled way to access the
> variable.
>
> The write functions, for example, could perform some range checking and
> return an error when the value is out of range.
>
> This is how we do it in medical instrument software that has to be
> scrutenized to the bone.
>
>
>
>
>
> Cheers, Ton
>
>
>
>
>
> ------------------------------
>
> *From:* icc-avr-bounces at imagecraft.com [mailto:
> icc-avr-bounces at imagecraft.com] *On Behalf Of *Bengt Ragnemalm
> *Sent:* dinsdag 4 september 2007 9:08
> *To:* ICC-AVR discussion list
> *Subject:* SV: [Icc-avr] Error message
>
> Sorry, sorry SORRY, I missed the very important word extern in one of the
> lines! The static should not be there either. Here is how it should be:
>
> In main file:
> unsigned char myVar=0;
>
> In other files:
> extern unsigned char myCar=0;
>
> Now you can see that the problem is that I have put a predefined value in
> the second line.
>
> /Bengt
>
>
>
>
> ------------------------------
>
> *Från:* John Baraclough [mailto:j_baraclough at zetnet.co.uk]
> *Skickat:* den 3 september 2007 18:32
> *Till:* benra at imt.liu.se; Discussion list for ICCAVR and ICCtiny Users.
> You do NOT need to subscribe to icc-announce if you are a member of this.
> *Ämne:* Re: [Icc-avr] Error message
>
> Hi Bengt,
>
> You got that message because that is exactly what you have done. Global
> variables can only be defined in one place in the whole project. Everywhere
> else you must use the 'extern' keyword.
>
> John
>
>
> P.S. Last week Richard said he was going away for a "couple of years". I
> hope he only meant a "couple of *weeks*", but he has been very quiet.
>
>
> At 07:50 03/09/2007, you wrote:
>
>
> I got this error:
>
> !E filename.o(294): multiple define: 'myVar
>
> I did have some problems with multiple defined variables because of a bad
> #define in a header. But it was not with this variable so I just didn't
> understand a thing until I found out that I had assigned a value to this
> global variable and also by mistake assigned it in the place there it was
> defined as extern. Like this:
>
> In main file:
> static unsigned char myVar=0;
>
> In other files:
> unsigned char myCar=0;
>
> Richard: Is it possible that this could result in some other error message
> than "multiple define"? Something like "multiple assigning of predefined
> value…"
>
> /Bengt
> ________________________________________________________________
>
> Bengt Ragnemalm Tel +46 13 22 24 97
>
> Research engineer FAX: +46 13 10 19
> 02
>
> Linköpings Universitet
> mailto:bengt.ragnemalm at imt.liu.se <bengt.ragnemalm at imt.liu.se>
>
> Inst. för Medicinsk Teknik Internet: http://www.imt.liu.se
>
> S-581 85 Linköping SWEDEN
>
>
>
> _______________________________________________
> Icc-avr mailing list
> Icc-avr at imagecraft.com
> http://dragonsgate.net/mailman/listinfo/icc-avr
>
>
> *
> ------------------------------
> *
>
> *Logitech Ltd is a limited company registered in Scotland. Registration
> Number: SC42330*
>
> *Registered Address: Erskine Ferry Road, Old Kilpatrick, Glasgow, G60 5EU,
> Scotland, UK*
> ------------------------------
>
>
>
> This message (and any associated files) is intended only for the use of
> the individual or entity
>
> to which it is addressed and may contain information that is confidential,
> subject to copyright
>
> or constitutes a trade secret. If you are not the intended recipient you
> are hereby notified that
>
> any dissemination, copying or distribution of this message, or files
> associated with this message,
>
> is prohibited. If you have received this message in error, please notify
> us immediately by replying
>
> to the message and deleting it from your computer.
>
> Messages sent to and from us may be monitored.
>
> Any views or opinions presented are solely those of the author and do not
> necessarily represent
>
> those of the company.
>
> _______________________________________________
> Icc-avr mailing list
> Icc-avr at imagecraft.com
> http://dragonsgate.net/mailman/listinfo/icc-avr
>
>
--
Paul Mateer, AA9GG
Elan Engineering Corp.
www.elanengr.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://dragonsgate.net/pipermail/icc-avr/attachments/20070905/582e91cf/attachment-0001.html
More information about the Icc-avr
mailing list